国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

基于html5+java實現(xiàn)大文件上傳實例代碼

2019-11-26 14:40:49
字體:
供稿:網(wǎng)友

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

html代碼如下:

<body><input id="fileid" type="file" accept="video/*;capture=camera"onchange="onfile(this)"><input id="btn" type="button" value="提交"><script type="text/javascript">var xhr;function onfile(file) {var fd = new FormData();fd.append("fileToUpload", document.getElementById('fileid').files[0]);xhr = new XMLHttpRequest();xhr.open("POST", "http://localhost:8889/TestUp/upservlet");//xhr.setRequestHeader("Content-Type","charset=UTF-8");xhr.send(fd);xhr.onreadystatechange = processResponse;}function processResponse(){if(xhr.readyState == 4){alert("上傳結(jié)束數(shù)據(jù)流結(jié)束");if(xhr.status == 200){var infor = xhr.responseText;alert("服務(wù)器端的響應(yīng) = "+infor);}}}</script></body>

java代碼如下所示:

package com.yjm.up;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;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.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 得到上傳文件的保存目錄,將上傳的文件存放于WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");File file = new File(savePath);System.out.println("test。。。。");// 判斷上傳文件的保存目錄是否存在if (!file.exists() && !file.isDirectory()) {System.out.println(savePath + "目錄不存在,需要創(chuàng)建");// 創(chuàng)建目錄file.mkdir();}// 消息提示String message = "";try {// 使用Apache文件上傳組件處理文件上傳步驟:// 1、創(chuàng)建一個DiskFileItemFactory工廠DiskFileItemFactory factory = new DiskFileItemFactory();// 2、創(chuàng)建一個文件上傳解析器ServletFileUpload upload = new ServletFileUpload(factory);// 解決上傳文件名的中文亂碼upload.setHeaderEncoding("UTF-8");// 3、判斷提交上來的數(shù)據(jù)是否是上傳表單的數(shù)據(jù)if (!ServletFileUpload.isMultipartContent(request)) {// 按照傳統(tǒng)方式獲取數(shù)據(jù)return;}// 4、使用ServletFileUpload解析器解析上傳數(shù)據(jù),解析結(jié)果返回的是一個List<FileItem>集合,每一個FileItem對應(yīng)一個Form表單的輸入項List<FileItem> list = upload.parseRequest(request);for (FileItem item : list) {// 如果fileitem中封裝的是普通輸入項的數(shù)據(jù)if (item.isFormField()) {String name = item.getFieldName();// 解決普通輸入項的數(shù)據(jù)的中文亂碼問題String value = item.getString("UTF-8");// value = new String(value.getBytes("iso8859-1"),"UTF-8");System.out.println(name + "=" + value);} else {// 如果fileitem中封裝的是上傳文件// 得到上傳的文件名稱,String filename = item.getName();System.out.println(filename);if (filename == null || filename.trim().equals("")) {continue;}// 注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,如:// c:/a/b/1.txt,而有些只是單純的文件名,如:1.txt// 處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分filename = filename.substring(filename.lastIndexOf("http://") + 1);// 獲取item中的上傳文件的輸入流InputStream in = item.getInputStream();// 創(chuàng)建一個文件輸出流FileOutputStream out = new FileOutputStream(savePath + "http://"+ filename);// 創(chuàng)建一個緩沖區(qū)byte buffer[] = new byte[1024 * 1024];// 判斷輸入流中的數(shù)據(jù)是否已經(jīng)讀完的標(biāo)識int len = 0;// 循環(huán)將輸入流讀入到緩沖區(qū)當(dāng)中,(len=in.read(buffer))>0就表示in里面還有數(shù)據(jù)while ((len = in.read(buffer)) > 0) {// 使用FileOutputStream輸出流將緩沖區(qū)的數(shù)據(jù)寫入到指定的目錄(savePath + "http://"http:// + filename)當(dāng)中out.write(buffer, 0, len);}out.flush();// 關(guān)閉輸入流in.close();// 關(guān)閉輸出流out.close();// 刪除處理文件上傳時生成的臨時文件item.delete();message = "文件上傳成功!";}}} catch (Exception e) {message = "文件上傳失敗!";e.printStackTrace();}request.setAttribute("message", message);request.getRequestDispatcher("/message.jsp").forward(request, response);}}

用到的java 包 是 超過1G上傳

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar

//xhr.setRequestHeader("Content-Type","application/octet-stream;charset=UTF-8"); 這不能添加
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新兴县| 广汉市| 英吉沙县| 保靖县| 鹤峰县| 保靖县| 临城县| 长兴县| 铜川市| 康平县| 古丈县| 永仁县| 林周县| 江山市| 诸城市| 乐平市| 汪清县| 阿拉尔市| 竹北市| 姚安县| 昆山市| 浦县| 南昌市| 稻城县| 托克逊县| 梓潼县| 庆城县| 奈曼旗| 建水县| 蓬溪县| 新田县| 涟源市| 永定县| 彭州市| 会同县| 汾阳市| 宝兴县| 高唐县| 申扎县| 宣汉县| 乐都县|