SpringMVC圖片文件跨服務(wù)器上傳
圖片文件跨服務(wù)器上傳(我使用的公司云桌面作為上傳服務(wù)器,自己的筆記本作為存儲服務(wù)器測試的)
一、上傳服務(wù)器:
1、pom文件(使用jersey插件)
<!-- 上傳組件包 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!-- 夸服務(wù)器文件上傳 --> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-core --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common --> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-common</artifactId> <version>2.26</version> </dependency>
2、前端頁面:
<form action="${pageContext.request.contextPath}/Abc/uploadImg.do" enctype="multipart/form-data" method="post"> 多個文件: <input type="file" name="fileList" multiple/> <input type="submit" value="提交" /> </form>
3、后臺controller:
/** * 多文件,跨服務(wù)器上傳 * @param request * @return */ @ResponseBody @RequestMapping("/uploadImg") public String fileUpload(MultipartHttpServletRequest request){ JSONObject joson = new JSONObject(); String serverAddress = "http://172.xxx.xxx.xxx:8080";//服務(wù)器地址 String folder = "/upload/";//文件夾名稱 String fullPaths = "";//絕對路徑 String reletivePaths = "";//相對路徑 // 創(chuàng)建jesy服務(wù)器 Client client = Client.create(); // 獲取文件名字 Iterator<String> fileNames = request.getFileNames(); List<String> fileNameList = new ArrayList<String>(); List<String> relaPathList = new ArrayList<String>(); List<String> realPathList = new ArrayList<String>(); try { while (fileNames.hasNext()) {//判斷多文件 // 把fileNames集合中的值打出來 String fileName = fileNames.next(); // request.getFiles(fileName)方法即通過fileName這個Key, 得到對應(yīng)的文件集合列表. // 只是在這個Map中, 文件被包裝成MultipartFile類型 List<MultipartFile> fileList = request.getFiles(fileName); if (fileList.size() > 0) { // 遍歷文件列表 Iterator<MultipartFile> fileIte = fileList.iterator(); while (fileIte.hasNext()) { // 獲得每一個文件 MultipartFile multipartFile = fileIte.next(); // 截取文件的后綴名(.jpg) String originalFilename = multipartFile.getOriginalFilename();//原始文件名 String subString = originalFilename.substring(originalFilename.indexOf("."));//文件名后綴 //System.out.println("原始文件名:"+originalFilename+";文件后綴名:"+subString); // 將文件對象轉(zhuǎn)換為字節(jié) byte[] fileBytes = multipartFile.getBytes(); // 生成唯一的一個字符串名稱(帶后綴) String newFilename = UUID.randomUUID().toString()+subString; //System.out.println("唯一文件名(帶后綴):"+newFilename); // 開始上傳文件 // 拼接保存的路徑(相對路徑) reletivePaths = folder+newFilename; // 拼接最終保存的路徑(絕對對路徑) fullPaths = serverAddress+reletivePaths; //把文件關(guān)聯(lián)到遠(yuǎn)程服務(wù)器 WebResource webResource = client.resource(fullPaths); // 上傳 webResource.put(String.class, fileBytes); fileNameList.add(newFilename);//文件名 relaPathList.add(reletivePaths);//相對路徑 realPathList.add(fullPaths); //真實完整路徑 } joson.put("success", 1); joson.put("error", ""); joson.put("fileNameList", fileNameList); joson.put("relaPathList", relaPathList); joson.put("realPathList", realPathList); } else { joson.put("success", 0); joson.put("error", "上傳失敗"); } } } catch (UniformInterfaceException e) { // TODO Auto-generated catch block e.printStackTrace(); joson.put("success", 0); joson.put("error", "上傳失敗"); } catch (ClientHandlerException e) { // TODO Auto-generated catch block e.printStackTrace(); joson.put("success", 0); joson.put("error", "上傳失敗"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); joson.put("success", 0); joson.put("error", "上傳失敗"); } return joson.toString(); }
二、存儲圖片文件服務(wù)器:
1、Tomcat的conf目錄下的web.xml文件的大概100行添加如下幾行(這要是不打開就會報錯)
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <!-- 上面是本來就有的 --> <!-- 允許文件讀寫 --> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <!-- 下面也是本來有的 --> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
2、在該Tomcat的/webapps/ROOT目錄下創(chuàng)建一個upload目錄,用來存放上傳的文件
3、啟動Tomcat靜等著上傳服務(wù)器那邊的請求
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringMVC 數(shù)據(jù)校驗實例解析
- springmvc的validator數(shù)據(jù)校驗的實現(xiàn)示例代碼
- SpringMVC 數(shù)據(jù)校驗方法(必看篇)
- springmvc使用JSR-303進行數(shù)據(jù)校驗實例
- springmvc實現(xiàn)跨服務(wù)器文件上傳功能
- springMVC+jersey實現(xiàn)跨服務(wù)器文件上傳
- Spring MVC下 bootStrap服務(wù)器分頁代碼
- 基于SpringMVC+Bootstrap+DataTables實現(xiàn)表格服務(wù)端分頁、模糊查詢
- Spring mvc服務(wù)端數(shù)據(jù)校驗實現(xiàn)流程詳解
相關(guān)文章
spring boot 日志/頁面處理、實體類構(gòu)建、后臺管理功能的實現(xiàn)
這篇文章主要介紹了spring boot 日志/頁面處理、實體類構(gòu)建、后臺管理功能的實現(xiàn),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08全面解析Spring Security 內(nèi)置 Filter
這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07idea報錯:程序包org.springframework.web.bind.annotation不存在
在用本地的maven倉庫的時候會org.springframework.web.bind.annotation不存在的錯誤,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解下2023-08-08