java上傳視頻代碼
你好
android客戶端代碼:
public class MainActivity extends Activity
{
private TextView uploadInfo;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uploadInfo = (TextView) findViewById(R.id.upload_info);
uploadFile();
}
public void uploadFile()
{
//伺服器端地址
String url = "http://192.168.0.108:8080/UploadFileServer/upload";
//手機端要上傳的文件,首先要保存你手機上存在該文件
String filePath = Environment.getExternalStorageDirectory()
+ "/1/power.apk";
AsyncHttpClient httpClient = new AsyncHttpClient();
RequestParams param = new RequestParams();
try
{
param.put("file", new File(filePath));
param.put("content", "liucanwen");
httpClient.post(url, param, new AsyncHttpResponseHandler()
{
@Override
public void onStart()
{
super.onStart();
uploadInfo.setText("正在上傳...");
}
@Override
public void onSuccess(String arg0)
{
super.onSuccess(arg0);
Log.i("ck", "success>" + arg0);
if(arg0.equals("success"))
{
Toast.makeText(MainActivity.this, "上傳成功!", 1000).show();
}
uploadInfo.setText(arg0);
}
@Override
public void onFailure(Throwable arg0, String arg1)
{
super.onFailure(arg0, arg1);
uploadInfo.setText("上傳失敗!");
}
});
} catch (FileNotFoundException e)
{
e.printStackTrace();
Toast.makeText(MainActivity.this, "上傳文件不存在!", 1000).show();
}
}
}
伺服器端代碼:
public class UploadFileServlet extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// 創建文件項目工廠對象
DiskFileItemFactory factory = new DiskFileItemFactory();
// 設置文件上傳路徑
String upload = this.getServletContext().getRealPath("/upload/");
// 獲取系統默認的臨時文件保存路徑,該路徑為Tomcat根目錄下的temp文件夾
String temp = System.getProperty("java.io.tmpdir");
// 設置緩沖區大小為 5M
factory.setSizeThreshold(1024 * 1024 * 5);
// 設置臨時文件夾為temp
factory.setRepository(new File(temp));
// 用工廠實例化上傳組件,ServletFileUpload 用來解析文件上傳請求
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
// 解析結果放在List中
try
{
List<FileItem> list = servletFileUpload.parseRequest(request);
for (FileItem item : list)
{
String name = item.getFieldName();
InputStream is = item.getInputStream();
if (name.contains("content"))
{
System.out.println(inputStream2String(is));
} else if(name.contains("file"))
{
try
{
inputStream2File(is, upload + "\" + item.getName());
} catch (Exception e)
{
e.printStackTrace();
}
}
}
out.write("success");
} catch (FileUploadException e)
{
e.printStackTrace();
out.write("failure");
}
out.flush();
out.close();
}
// 流轉化成字元串
public static String inputStream2String(InputStream is) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1)
{
baos.write(i);
}
return baos.toString();
}
// 流轉化成文件
public static void inputStream2File(InputStream is, String savePath)
throws Exception
{
System.out.println("文件保存路徑為:" + savePath);
File file = new File(savePath);
InputStream inputSteam = is;
BufferedInputStream fis = new BufferedInputStream(inputSteam);
FileOutputStream fos = new FileOutputStream(file);
int f;
while ((f = fis.read()) != -1)
{
fos.write(f);
}
fos.flush();
fos.close();
fis.close();
inputSteam.close();
}
}
追問
謝謝。
手機上傳過來的東東是在哪個變數裡面的。這個方法我有在網上找到,就是不知道要怎麼用,看起來怎麼覺得沒有一個變數是跟客戶端打交道了。
IOS的要怎麼用
回答
首先你得在客戶端選中一個文件把,apk iph啥的 然後點擊「上傳」 就請求了String url = "http://192.168.0.108:8080/UploadFileServer/upload"; 一個url對吧 然後就以流的方式把文件傳輸過去,你再用spring 類似這段代碼 「@RequestMapping("/uploadPage")
@ResponseBody
public String uploadPage(Long id,@RequestParam("userfile") CommonsMultipartFile mFile){」,接下來就是里邊具體內容的處理了,上面的例子是普通的servlet。如果用spring框架就套用這個。
追問
謝謝!
我有用Spring框架,不過還不是很明白你說的,能不能再說詳細一點,還有這幾個註解要導入什麼包。Spring學的不是很多
我查過了,網上說是Struts2的過濾器過濾沒了,所以List<FileItem> list = servletFileUpload.parseRequest(request);一直為空。然後把/*改成*.action就又報錯了
回答
哦 我用的這是spring mvc struts2用的太早了,不記得了。反正中心思想就是提交流媒體到java服務端,能獲得二進制流就行 剩下的就是你怎麼運用框架了,具體你查查struts2的上傳如何使用。
❷ 怎樣使用javaweb實現上傳視頻和下載功能
文件上傳就是將客戶端資源,通過網路傳遞到伺服器端。
因為文件數據比較大,必須通過文件上傳才可以完成將數據保存到資料庫端的操作。
文件上傳的本質就是IO流操作。
演示:文件上傳應該如何操作?
瀏覽器端:
1.method=post 只有post才可以攜帶大數據
2.必須使用<input type='file' name='f'>要有name屬性
3.encType="multipart/form-data"
伺服器端:
request對象是用於獲取請求信息。
它有一個方法 getInputStream(); 可以獲取一個位元組輸入流,通過這個流,可以讀取到
所有的請求正文信息.
文件上傳原理:
瀏覽器端注意上述三件事,在伺服器端通過流將數據讀取到,在對數據進行解析.
將上傳文件內容得到,保存在伺服器端,就完成了文件上傳。
注意:在實際開發中,不需要我們進行數據解析,完成文件上傳。因為我們會使用文件上傳的工具,它們已經封裝好的,提供API,只要調用它們的API就可以完成文件上傳操作.我們使用的commons-fileupload,它是apache提供的一套開源免費的文件上傳工具。
代碼演示文件上傳的原理:
在WebRoot下新建upload1.jsp
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyJSP'index.jsp'startingpage</title>
</head>
<body>
<!--encType默認是application/x-www-form-urlencoded-->
<formaction="${pageContext.request.contextPath}/upload1"
method="POST"enctype="multipart/form-data">
<inputtype="text"name="content"><br>
<inputtype="file"name="f"><br><inputtype="submit"
value="上傳">
</form>
</body>
</html>
packagecn.itcast.web.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//System.out.println("upload1servlet......");
//通過request獲取一個位元組輸入流,將所有的請求正文信息讀取到,列印到控制台
InputStreamis=request.getInputStream();
byte[]b=newbyte[1024];
intlen=-1;
while((len=is.read(b))!=-1){
System.out.println(newString(b,0,len));
}
is.close();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
在web頁面中添加上傳輸入項。
在Servlet中讀取上傳文件的數據,並保存在伺服器硬碟中。
1、必須設置input輸入項的name屬性,否則瀏覽器將不會發送上傳文件的數據。
2、必須把form的encType屬性設為multipart/form-data 設置該值後,瀏覽器在上傳文件時,並把文件數據附帶在http請求消息體內,並使用MIME協議對上傳的文件進行描述,以方便接收方對上傳數據進行解析和處理。
3、表單的提交方式要設置為post。
Request對象提供了一個getInputStream方法,通過這個方法可以讀取到客戶端提交過來的數據。但由於用戶可能會同時上傳多個文件,在servlet端編程直接讀取上傳數據,並分別解析出相應的文件數據是一項非常麻煩的工作,示例。
為方便用戶處理文件上傳數據,Apache 開源組織提供了一個用來處理表單文件上傳的一個開源組件( Commons-fileupload ),該組件性能優異,並且其API使用極其簡單,可以讓開發人員輕松實現web文件上傳功能,因此在web開發中實現文件上傳功能,通常使用Commons-fileupload組件實現。
使用Commons-fileupload組件實現文件上傳,需要導入該組件相應支撐jar包:Commons-fileupload和commons-io。commo-io不屬於文件上傳組件的開發jar文件,但Commons-fileupload組件從1.1版本開始,它工作時需要commons-io包的支持。
新建Upload1Servlet 路徑:/upload1
[java]view plain
在瀏覽器端訪問信息如下:
文件上傳概述
實現web開發中的文件上傳功能,需要完成如下二步操作:
如何在web頁面中添加上傳輸入項?
<input type="file">標簽用於在web頁面中添加文件上傳輸入項,設置文件上傳輸入項時注意:
如何在Servlet中讀取文件上傳數據,並保存到本地硬碟中?
❸ java/web 如何編寫視頻上傳的代碼
一般視頻文件不要存儲到資料庫中,因為存儲的時候會以二進制流的形式存儲進去。 視頻文件通常上傳後存儲到文件伺服器,如ftp伺服器。 思路是這樣:1.讀取客戶端提交的文件流;2.連接ftp伺服器,將文件流還原生成視頻文件。
❹ java 項目開發 實現上傳視頻。
上傳視頻?只是上傳的話,相當於,上傳文件了
html如下
<form action="MultipartTestServlet" enctype="multipart/form-data" method="post">
<input type="text" name="username" /><br />
<input type="file" name="myfile" /><br/>
<input type="submit" />
</form>
java如下
MultipartTestServlet.java
package com.bug.servlet;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
public class MultipartTestServlet extends HttpServlet {
public MultipartTestServlet() {
super();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gbk");
RequestContext requestContext = new ServletRequestContext(request);
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File("c:/tmp/"));
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setHeaderEncoding("gbk");
upload.setSizeMax(2000000);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
System.out.println("文件上傳發生錯誤" + e1.getMessage());
}
Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
}else{
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " +
fileItem.isInMemory() + " " +
fileItem.getContentType() + " " +
fileItem.getSize());
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
File newFile = new File("c:/temp/" + fullFile.getName());
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("文件沒有選擇 或 文件內容為空");
}
}
}
}
}
}
web.xml中加入
<servlet>
<servlet-name>MultipartTestServlet</servlet-name>
<servlet-class>com.bug.servlet.MultipartTestServlet</servlet-class>
</servlet>
需要的包到這三個地方下載
http://jakarta.apache.org/commons/fileupload/下載
http://jakarta.apache.org/commons/io/下載
在http://www.servlets.com/cos/下載
關於視頻的播放,你只能自己再去找了
❺ java怎麼寫上傳視頻啊能給一份全一些的代碼么最好注釋也詳細一些的。本人超笨菜鳥。
jsp 是web伺服器頁面技術,ftp是另外一種通信協議,
如果你想從瀏覽器直接把文件上傳到ftp中,這個技術不靠普,因為已經超出java web 伺服器的能力了,不如直接發送到伺服器上,由伺服器決定保存在什麼地方。
或者為管理員單獨開ftp許可權
❻ Java網站,怎麼實現圖片、視頻的上傳
使用開源的html編輯器,如:FCKEditor,Kissy等,或自己用iframe實現一個自定的編輯器。
還可以使用flash做文本編輯器
❼ java如何在網頁里添加視頻
HTML5就可以實現在網頁里添加視頻,用<video src="xxx.mp4">這里寫不支持html5視頻的文字</video>
這是最簡單的寫法,具體方法和功能參考 http://www.w3school.com.cn/html5/html_5_video.asp
你可以用javscript來控制<video>屬性來控制視頻!
❽ java web 項目如何實現視頻上傳然後播放功能
搞清楚兩個問題:上傳到自己的伺服器還是第三方平台?播放器實用Flash還是H5播放器?
如果是上傳到自己的伺服器,使用H5播放。那上傳視頻就和普通的文件上傳一樣。都是通過Http上傳。前端可以使用form表單上傳也可以使用ajax非同步上傳。後台可以使用apache的Common-fileUpload工具來解析並保存文件。然後生成一個訪問路徑。將訪問路徑返回給前端的 video標簽的src屬性即可。通過幾個簡單的屬性或腳本就能控制播放。
如果是上傳到第三方平台,例如騰訊視頻、愛奇藝、優酷等。他們都有開發者平台或者開放平台。一般都有一些jar工具類或者模板案例提供給你的。你上傳之後,也有返迴路徑給你。這是一般都是嵌入它們的Flash插件。所以你只需要將那段Flash插件的HTML代碼放入你的網頁中就可以播放了。好處是,不需要自己存儲。不需要准備播放器。壞處是,可能有廣告。不是可能。是一定會有。
❾ java怎麼實現視頻上傳
方法/步驟
1
首先這里jsp頁面的代碼 定義布局文件html的 如圖所示
❿ 用java怎麼實現從前端接收、處理並傳回視頻
1、接收前端上傳的文件
/**
* 接收多文件
*/
@RequestMapping("/upload")
public R uploadFile(@RequestParam Map<String, Object> params, HttpServletRequest request) {
// 復雜類型的request對象
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
// 獲取文件名集合放入迭代器
Iterator<String> files = mRequest.getFileNames();
while (files.hasNext()) {
// 獲取上傳文件的對象
MultipartFile mFile = mRequest.getFile(files.next());
if (mFile != null) {
//原始文件名稱
String oldfile = mFile.getOriginalFilename();
//文件後綴
String suffix = oldfile.substring(oldfile.indexOf('.'), oldfile.length());
String suffix2 = oldfile.substring(oldfile.indexOf('.')+1, oldfile.length());
/***************文件處理*********************/
}
}
}
2.接收前端上傳的文件
/**
* 接收附件
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value="fileupload",method=RequestMethod.POST)
public void springUpload(HttpServletRequest request) {
//將當前上下文初始化給 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//檢查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request)) {
//將request變成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//獲取multiRequest 中所有的文件名
Iterator iter=multiRequest.getFileNames();
while(iter.hasNext()){
//一次遍歷所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
//最初上傳文件名的文件名
String oldFilename = file.getOriginalFilename();
//獲取初始文件名後綴
String fileSuffix = oldFilename.substring(oldFilename.lastIndexOf(".") +1);
/***************文件處理*********************/
}
}
3.接收前端上傳的文件
/**
* 接收文件
*
*
* @param model
* @return
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping(value = "imageupload")
public void imageUpload(MultipartFile file) throws IllegalStateException, IOException {
//文件名稱
String realFileName = file.getOriginalFilename();
//文件後綴
String suffix = realFileName.substring(realFileName.lastIndexOf(".") + 1);
/***************文件處理*********************/
}