最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC圖片文件跨服務(wù)器上傳

 更新時間:2019年08月23日 17:12:47   作者:小碼農(nóng)1996  
這篇文章主要為大家詳細介紹了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)到遠程服務(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Springboot的擴展點DisposableBean的原理解析

    關(guān)于Springboot的擴展點DisposableBean的原理解析

    這篇文章主要介紹了關(guān)于Springboot的擴展點DisposableBean的原理解析,DisposableBean是一個接口,為Spring bean提供了一種釋放資源的方式 ,只有一個擴展方法destroy(),需要的朋友可以參考下
    2023-05-05
  • SpringBoot多數(shù)據(jù)源配置方式以及報錯問題的解決

    SpringBoot多數(shù)據(jù)源配置方式以及報錯問題的解決

    這篇文章主要介紹了SpringBoot多數(shù)據(jù)源配置方式以及報錯問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java substring方法實現(xiàn)原理解析

    Java substring方法實現(xiàn)原理解析

    這篇文章主要介紹了Java substring方法實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot 自動裝配的原理詳解分析

    SpringBoot 自動裝配的原理詳解分析

    這篇文章主要介紹了SpringBoot 自動裝配的原理詳解分析,文章通過通過一個案例來看一下自動裝配的效果展開詳情,感興趣的小伙伴可以參考一下
    2022-08-08
  • RestTemplate發(fā)送get和post請求,下載文件的實例

    RestTemplate發(fā)送get和post請求,下載文件的實例

    這篇文章主要介紹了RestTemplate發(fā)送get和post請求,下載文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 利用Spring MVC+Mybatis實現(xiàn)Mysql分頁數(shù)據(jù)查詢的過程詳解

    利用Spring MVC+Mybatis實現(xiàn)Mysql分頁數(shù)據(jù)查詢的過程詳解

    這篇文章主要給大家介紹了關(guān)于利用Spring MVC+Mybatis實現(xiàn)Mysql分頁數(shù)據(jù)查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • springboot DTO字符字段與日期字段的轉(zhuǎn)換問題

    springboot DTO字符字段與日期字段的轉(zhuǎn)換問題

    這篇文章主要介紹了springboot DTO字符字段與日期字段的轉(zhuǎn)換問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java通過Callable實現(xiàn)多線程

    Java通過Callable實現(xiàn)多線程

    這篇文章主要介紹了Java通過Callable實現(xiàn)多線程,Callable的任務(wù)執(zhí)行后可返回值,運行Callable任務(wù)可以拿到一個Future對象,Future表示異步計算的結(jié)果,它提供了檢查計算是否完成的方法,以等待計算的完成,并檢查計算的結(jié)果,需要的朋友可以參考下
    2023-10-10
  • 解析Mybatis的insert方法返回數(shù)字-2147482646的解決

    解析Mybatis的insert方法返回數(shù)字-2147482646的解決

    這篇文章主要介紹了解析Mybatis的insert方法返回數(shù)字-2147482646的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐

    Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐

    在微服務(wù)架構(gòu)中,配置管理是一個核心組件,而Nacos為此提供了一個強大的解決方案,本文主要介紹了Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐,具有一定的參考價值
    2023-08-08

最新評論

皮山县| 鹤庆县| 祥云县| 潞城市| 顺平县| 黄梅县| 长顺县| 通渭县| 大姚县| 永平县| 西昌市| 铜梁县| 长沙市| 温州市| 奉节县| 进贤县| 朝阳区| 和平区| 绥宁县| 达尔| 思南县| 黔江区| 青海省| 九寨沟县| 邮箱| 吴川市| 寿宁县| 酒泉市| 麻城市| 尚义县| 黑龙江省| 民丰县| 枣强县| 防城港市| 肇源县| 中江县| 利川市| 津南区| 清河县| 同仁县| 昭通市|