這篇文章給大家介紹使用SpringMVC怎么實(shí)現(xiàn)跨服務(wù)器上傳文件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為葡萄架等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
一、上傳服務(wù)器:
1、pom文件(使用jersey插件)
commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.4 commons-codec commons-codec 1.9 com.sun.jersey jersey-client 1.18.6 com.sun.jersey jersey-core 1.18.6 org.glassfish.jersey.core jersey-common 2.26
2、前端頁面:
3、后臺(tái)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(); // 獲取文件名字 IteratorfileNames = request.getFileNames(); List fileNameList = new ArrayList (); List relaPathList = new ArrayList (); List realPathList = new ArrayList (); try { while (fileNames.hasNext()) {//判斷多文件 // 把fileNames集合中的值打出來 String fileName = fileNames.next(); // request.getFiles(fileName)方法即通過fileName這個(gè)Key, 得到對應(yīng)的文件集合列表. // 只是在這個(gè)Map中, 文件被包裝成MultipartFile類型 List fileList = request.getFiles(fileName); if (fileList.size() > 0) { // 遍歷文件列表 Iterator fileIte = fileList.iterator(); while (fileIte.hasNext()) { // 獲得每一個(gè)文件 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(); // 生成唯一的一個(gè)字符串名稱(帶后綴) 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); //真實(shí)完整路徑 } 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(); }
二、存儲(chǔ)圖片文件服務(wù)器:
1、Tomcat的conf目錄下的web.xml文件的大概100行添加如下幾行(這要是不打開就會(huì)報(bào)錯(cuò))
default org.apache.catalina.servlets.DefaultServlet debug 0 readonly false listings false 1
2、在該Tomcat的/webapps/ROOT目錄下創(chuàng)建一個(gè)upload目錄,用來存放上傳的文件
3、啟動(dòng)Tomcat靜等著上傳服務(wù)器那邊的請求
關(guān)于使用SpringMVC怎么實(shí)現(xiàn)跨服務(wù)器上傳文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。