.html內容
<div> <form method="post" action="/Cyberspace/main/informationBatchAdd.do" enctype="multipart/form-data"> <input type="file" id="excelFile" multiple="multiple" name="file"/> <button type="submit">批量上傳</button> </form> </div>
2.服務端后臺支持多文件上傳的接口
/** * 信息上報批量增加 */ @RequestMapping(value = "informationBatchAdd", method = RequestMethod.POST) @ResponseBody public JSONResult informationBatchAdd(MultipartHttpServletRequest request) { JSONResult jsonResult; try { Integer result = 0; MultiValueMap<String, MultipartFile> multiValues = request.getMultiFileMap();//獲取請求中所有的文件流 Iterator<Map.Entry<String, List<MultipartFile>>> iterator = multiValues.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, List<MultipartFile>> entry = iterator.next(); for (MultipartFile file : entry.getValue()) { InputStream in = file.getInputStream();//轉換成輸入流 XSSFWorkbook readWb = new XSSFWorkbook(in); for (int i = 0; i < readWb.getNumberOfSheets(); i++) {//遍歷該表格中所有的工作表,i表示工作表的數量 getNumberOfSheets表示工作表的總數 XSSFSheet sheet = readWb.getSheetAt(i); 。。。 Integer totalRow = sheet.getLastRowNum();//獲取excel共有多少行 for (int rowNum = 1; rowNum <= totalRow; rowNum++) { // 循環行Row XSSFRow hssfRow = sheet.getRow(rowNum); if (hssfRow != null && hssfRow.getPhysicalNumberOfCells() >= 7) {//getPhysicalNumberOfCells 獲取縱列數 。。。 } } result += 。。。; } } } jsonResult = new JSONResult(CODE_SUCCESS, MSG_SUCCESS, result);//JSONResult是自己定義的一個類 } catch (Exception e) { jsonResult = new JSONResult(CODE_FAIL, MSG_FAIL, null); e.printStackTrace(); } return jsonResult; }
3.假如遇到要中轉上傳文件流到以上的接口中,那么下面的內容就是你的福音
/** * 中轉文件 * * @param files 上傳的文件,該參數的獲取 request.getFiles("xxxx")或者參照第二步中的方法 * @return 響應結果 */ public static String httpClientUploadFile(List<MultipartFile> files, String remoteUrl) { final String remote_url = remoteUrl;// 第三方服務器請求地址 CloseableHttpClient httpClient = HttpClients.createDefault(); String result = ""; try { HttpPost httpPost = new HttpPost(remote_url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//設置瀏覽器兼容模式 for (int i = 0; i < files.size(); i++) { MultipartFile file = files.get(i); String fileName = file.getOriginalFilename(); builder.addBinaryBody("file" + i, file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流 builder.addTextBody("filename", fileName);// 類似瀏覽器表單提交,對應input的name和value } HttpEntity entity = builder.build(); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost);// 執行提交 HttpEntity responseEntity = response.getEntity(); result = EntityUtils.toString(responseEntity, UTF8); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; }
4.中轉下載文件
tml+SpringBoot超大視頻上傳解決方案,html+SpringBoot超大視頻上傳思路,html+SpringBoot超大視頻上傳源碼,html+SpringBoot超大視頻上傳實例,html+SpringBoot超大視頻上傳實現方法,html+SpringBoot超大視頻分塊上傳,html+SpringBoot超大視頻分片上傳,html+SpringBoot超大視頻加密上傳,html+SpringBoot超大視頻切片上傳,html+SpringBoot超大視頻批量上傳,
隨著視頻網站和大數據應用的普及,特別是高清視頻和4K視頻應用的到來,超大文件上傳已經成為了日常的基礎應用需求。
SpringBoot實現HTTP大文件斷點續傳分片上傳,JAVA以HTTP方式實現大文件分片,分段,分塊,分割上傳。
需要支持斷點續傳,上傳一半關閉電腦后,明天能夠繼續上傳。或者關閉瀏覽器,或關閉網頁,或刷新網頁。
速度這塊的話,內網是希望跑滿的,百兆網絡的話12MB/S左右,千兆的話50MB/S左右。
需要支持文件夾上傳,斷點續傳,上傳保留層級結構。
網上搜到的SpringBoot的代碼不多,完整的不多,能用的也不多,基本上大部分的文章只是提供了少量的代碼,講一下思路,或者實現方案。
之前一般的做法都是使用HTML5來做的,大部都是傳文件的,傳文件夾的不多。網上能夠搜到的能用的不多。下來下的話,基本上都不能滿足用戶的 需求。或者用戶在用的時候總是會遇到這樣或那樣的問題,維護的話也很麻煩,用戶滿意度比較低。
對于大文件的處理,無論是用戶端還是服務端,如果一次性進行讀取發送、接收都是不可取,很容易導致內存問題。所以對于大文件上傳,采用切塊分段上傳
從上傳的效率來看,利用多線程并發上傳能夠達到最大效率。
文件上傳頁面的前端可以選擇使用一些比較好用的上傳組件,例如百度的開源組件WebUploader,澤優軟件的up6,這些組件基本能滿足文件上傳的一些日常所需功能,如異步上傳文件,文件夾,拖拽式上傳,黏貼上傳,上傳進度監控,文件縮略圖,甚至是大文件斷點續傳,大文件秒傳。
在web項目中上傳文件夾現在已經成為了一個主流的需求。在OA,或者企業ERP系統中都有類似的需求。上傳文件夾并且保留層級結構能夠對用戶行成很好的引導,用戶使用起來也更方便。能夠提供更高級的應用支撐。
版本:6.5.40
代碼:https://gitee.com/xproer/up6-jsp-springboot/tree/6.5.40/
nosql示例
nosql示例不需要進行任何配置,可以直接訪問測試。
SQL示例
1.創建數據庫
2.配置數據庫連接
3.自動下載maven依賴
4.啟動項目
啟動成功
6.訪問及測試
默認頁面接口定義:
在瀏覽器中訪問:
數據表中的數據
相關問題:
1.javax.servlet.http.HttpServlet錯誤
2.項目無法發布到tomcat
3.md5計算完畢后卡住
4.服務器找不到config.json文件
5.Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
相關參考:
文件保存位置
源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源碼報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
產品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
授權生成器:https://drive.weixin.qq.com/s?k=ACoAYgezAAwTIcFph1
何實現大文件上傳、斷點續傳、切片上傳,VUE實現大文件分片上傳、斷點續傳,網頁 項目大文件上傳下載解決方案,VUE實現文件上傳與下載,H5+JAVA的文件上傳,斷點續傳,前端大文件切片上傳,斷點續傳、秒傳等解決方案,VUE中使用實例,NGINX支持超大文件HTTP斷點續傳,VUE實現文件的分片上傳,前端大文件上傳處理方案,如何解決控件附件上傳時超大附件無法上傳的問題,完美解決B/S無法上傳大文件解決方法,網頁完美解決B/S無法上傳大文件方法,前端完美解決B/S無法上傳大文件方法
SpringBoot完美解決B/S無法上傳大文件方法,java完美解決B/S無法上傳大文件方法,input file完美解決B/S無法上傳大文件方法,jsp完美解決B/S無法上傳大文件方法,dom完美解決B/S無法上傳大文件方法,百度webuploader完美解決B/S無法上傳大文件方法,webuploader完美解決B/S無法上傳大文件方法,html5完美解決B/S無法上傳大文件方法,JS完美解決B/S無法上傳大文件方法,完美解決B/S無法上傳大文件方法,
JS實現文件夾的多線程上傳和下載,JS實現文件夾的加密上傳和下載,JS怎么實現文件夾的上傳和下載,vue實現文件夾的上傳和下載,web實現文件夾的上傳和下載,網頁實現文件夾的上傳和下載,dom實現文件夾的上傳和下載,html5實現文件夾的上傳和下載,JavaScript實現文件夾的上傳和下載,JS如何實現文件夾的上傳和下載,JS實現文件夾的上傳和下載解決方案,百度webuploader實現文件夾的上傳和下載,webuploader實現文件夾的上傳和下載,
網頁項目純HTML,純VUE這類方案不多。客戶那邊實際上比較在乎兩點。
JS實現文件夾的上傳和下載,WEBUPLOADER上傳大文件的三種解決方案,WEBUPLOADER上傳大文件的解決方案,WEBUPLOADER上傳大文件的方案,百度WEBUPLOADER上傳大文件的三種解決方案,百度WEBUPLOADER上傳大文件的三種代碼,百度WEBUPLOADER上傳大文件的三種源碼,百度WEBUPLOADER上傳大文件的三種源代碼,HTML5上傳大文件的三種源代碼,JavaScript上傳大文件的三種源代碼,WEBUPLOADER如何實現大文件斷點續傳、秒傳,
實際上客戶對技術并不在意,用HTML也好用控件也罷。
HTML5分片,分段,分塊,分割,切片,切割上傳,H5原理實際上上傳的原理就是把一個大的文件切割成若干個小數據塊進行上傳,下載的話Chrome雖然提供了幾個API,但是不好用
給政府做的一個項目,需要實現一個文件管理系統,主要就是需要在服務端進行加密存儲,傳輸過程也需要進行加密,加密算法需要支持國密SM4,現在因為信息安全的需求,基本政府那邊服務端和終端系統都是信創國產化的系統。政府這邊對安全性要求比較嚴格。
附件太大了確實很難上傳,上傳的時候容易出錯,處理起來的確有些麻煩。
現在chrome提供了相關的API,在HTML5中也能夠上傳文件,不過有限制,每個域名限制了5個TCP連接。用起來不是那么的舒服,也不夠靈活,當然也能夠滿足一般的使用場景。不太復雜的也能夠湊合著用。
但是如果有上傳文件夾,文件夾中包含很多文件,比如1萬或者10萬,這種場景下用起來就不是那么的舒服了,如果單個文件的大小超過10G,比如20G,這種場景下用起來也不是特別的舒服。
還有批量下載的話HTML5的能力也有限,下是能下,但是每下一個文件就需要用戶手動確認一下,那比如我要下載100個文件,也需要確認100次,用戶不太接受這種方式。
用戶的環境還是有點復雜的,也就是用戶那邊公司用的操作系統很多,終端系統有windows,macOS,linux,不同的部門用的系統還不一樣,營銷部門的話用macOS多一些,運維后端的同事用linux用的多一些,主要就是centos和ubuntu,其它的同事用的windows多一些。1.下載示例
https://gitee.com/xproer/up6-vue-cli
將up6組件復制到項目中
示例中已經包含此目錄
1.引入up6組件
2.配置接口地址
接口地址分別對應:文件初始化,文件數據上傳,文件進度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表
參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.處理事件
啟動測試
啟動成功
效果
數據庫
源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源碼報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
控件源碼下載:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
*請認真填寫需求信息,我們會在24小時內與您取得聯系。