您好,登錄后才能下訂單哦!
這篇文章給大家介紹使用SpringMVC怎么實現(xiàn)跨服務器上傳文件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、上傳服務器:
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> <!-- 夸服務器文件上傳 --> <!-- 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:
/** * 多文件,跨服務器上傳 * @param request * @return */ @ResponseBody @RequestMapping("/uploadImg") public String fileUpload(MultipartHttpServletRequest request){ JSONObject joson = new JSONObject(); String serverAddress = "http://172.xxx.xxx.xxx:8080";//服務器地址 String folder = "/upload/";//文件夾名稱 String fullPaths = "";//絕對路徑 String reletivePaths = "";//相對路徑 // 創(chuàng)建jesy服務器 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, 得到對應的文件集合列表. // 只是在這個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); // 將文件對象轉換為字節(jié) byte[] fileBytes = multipartFile.getBytes(); // 生成唯一的一個字符串名稱(帶后綴) String newFilename = UUID.randomUUID().toString()+subString; //System.out.println("唯一文件名(帶后綴):"+newFilename); // 開始上傳文件 // 拼接保存的路徑(相對路徑) reletivePaths = folder+newFilename; // 拼接最終保存的路徑(絕對對路徑) fullPaths = serverAddress+reletivePaths; //把文件關聯(lián)到遠程服務器 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(); }
二、存儲圖片文件服務器:
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靜等著上傳服務器那邊的請求
關于使用SpringMVC怎么實現(xiàn)跨服務器上傳文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。