欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

解決springboot獲取form-data里的file文件的問題

解決springboot 獲取form-data里的file文件的問題

我們注重客戶提出的每個要求,我們充分考慮每一個細節(jié),我們積極的做好網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)建站贏得了業(yè)內(nèi)的良好聲譽,這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計,小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。

前言:

這兩天用 springboot 和同事的 iOS 客戶端上傳文件對接。在客戶端他使用的是 afnetworking 第三方庫。我使用的是 springboot 集成的 StandardMultipartHttpServletRequest 的解析方式。 寫好服務(wù)器端的接口以后,使用 postman 模擬 form-data 混合上傳普通文本數(shù)據(jù)和 file 文件是沒問題的。后來再 iOS 端混合上傳文本和 file 的時候,發(fā)現(xiàn) multiPartFile 解析不到文件。經(jīng)過查看 StandardMultipartHttpServletRequest 的源文件,以及斷點跟蹤,發(fā)現(xiàn)在 form-data 解析成 part 的時候是沒問題的,在遍歷 part 的時候就發(fā)現(xiàn)問題的所在了。

下圖是 postman 模擬上傳時候的斷點跟蹤:

 解決springboot 獲取form-data里的file文件的問題

postman模擬上傳 在途中的紅框里可以發(fā)現(xiàn)在 files 這個 part 里面的 content-dispostion 這個 key 對應(yīng)的 value 里面包含filename="Jitu....."部分。而在普通的文本輸入框?qū)?yīng)的 part 部分是沒這段值的。 我用 iOS 客戶端進行測試的時候發(fā)現(xiàn)文件上傳的部分是缺少這段值的.

我們再來看StandardMultipartHttpServletRequest的一部分源碼:

 private static final String CONTENT_DISPOSITION = "content-disposition";
private static final String FILENAME_KEY = "filename=";
private static final String FILENAME_WITH_CHARSET_KEY = "filename*=";

private void parseRequest(HttpServletRequest request) {
  try {
    Collection<Part> parts = request.getParts();
    this.multipartParameterNames = new LinkedHashSet<String>(parts.size());
    MultiValueMap<String, MultipartFile> files = new LinkedMultiValueMap<String, MultipartFile>(parts.size());
    for (Part part : parts) {
      String disposition = part.getHeader(CONTENT_DISPOSITION);
      String filename = extractFilename(disposition);
      if (filename == null) {
        filename = extractFilenameWithCharset(disposition);
      }
      if (filename != null) {
        files.add(part.getName(), new StandardMultipartFile(part, filename));
      } else {
        this.multipartParameterNames.add(part.getName());
      }
    }
    setMultipartFiles(files);
  }
    catch (Throwable ex) {
      throw new MultipartException("Could not parse multipart servlet request", ex);
    }
  }

private String extractFilename(String contentDisposition) {
  return extractFilename(contentDisposition, FILENAME_KEY);
}

第一個方法是解析 request 請求的, 作用是將 request 里面的form-data表單數(shù)據(jù)分類解析為普通文本輸入和文件輸入, 而第二個方法就是用來判斷是否為文件的, 其中第二個參數(shù)值就是filename=, 如果content-dispostion的值里包含這個值, 則判斷為文件, 否則就是普通文本輸入. 看到這里就能明白為什么在跟 iOS 客戶端聯(lián)調(diào)的時候沒把文件流解析成multipartFile. 這時候只需要在客戶端組裝form-data的時候需要加上filename=xxx這部分值.

以上就是springboot 獲取form-data里的file文件的實例詳解,如有疑問請留言或到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

網(wǎng)頁名稱:解決springboot獲取form-data里的file文件的問題
鏈接分享:http://www.aaarwkj.com/article12/gppggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航App開發(fā)、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
一区二区高清中文字幕| 91精品欧美综合在线| 国产真实精品对白又爽欧美| 尤物在线观看精品视频| 日韩精品中文字幕欧美激情| 91麻豆国产在线视频| 中文字幕日韩人妻av| av资源天堂第一区第二区第三区 | 久久精品亚洲欧美麻豆| 亚洲伦理一区二区三区中文| 一区二区在线视频免费播放 | 亚洲黄色手机在线网站| 在线观看不卡的黄色地址 | 国产午夜草莓视频在线观看| 亚洲高清中文字幕专区| 色婷婷一区二区三区四| 热久久精品只有这里有| 国产精品国产精品三级在线观看| 福利午夜福利在线观看| 久久精品国产成人综合| 欧美日韩人美精品一区在线| 夫妻晚上同房太猛视频| 亚洲中文字幕乱码熟女在线| 午夜激情视频在线网站| 中文字幕人妻出轨一区二区| 97在线资源视频播放| 久久久国产精品调教网站| 国产级一片内射视步页| 日韩av在线专区观看| 亚洲精品黄色片中文字幕| 亚洲日本香蕉视频观看视频| 黄色高清无遮挡在线观看| 一区二区三区熟妇人妻视频 | 中文字幕av二区三区人妻| 日本东京热免一区二区| 国产综合一区在线观看97| 青青草日韩视频在线观看| 国产一区二区精品久久岳√| 欧美一区日韩二区在线| 亚洲午夜精品久久久天堂| 日本高清一区二区不卡视频|