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

SpringBoot中實現(xiàn)接收文件和對象

 更新時間:2022年07月07日 10:31:35   作者:LitongZero  
這篇文章主要介紹了SpringBoot實現(xiàn)接收文件和對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot接收文件和對象

使用場景:某個接口,需要同時接收文件和實體,也就是參數(shù)

一、這個時候,前端就不能json格式傳送數(shù)據(jù)了,要用到multipart/form-data;這種格式傳送數(shù)據(jù)。

二、那么,這個時候,后端應(yīng)該怎樣接收這個參數(shù)和文件呢?

1.接收HttpServletRequest,自己處理request(不推薦)

@PostMapping(value = "/upload") ? ?
@ResponseBody ? ?
public String handleFileUpload(HttpServletRequest request) { ? ?
MultipartHttpServletRequest params=((MultipartHttpServletRequest) request); ?
// 獲取文件
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); ??
// 獲取參數(shù)
String name=params.getParameter("name"); ?

2.接收實體,將文件放到對象屬性中(推薦)

public class UserFileReq {
?? ?// 參數(shù)
? ? private String username;
? ? // 文件
? ? private MultipartFile file;
? ? // 省略get\set
}
@PostMapping(value = "/upload") ? ?
@ResponseBody ? ?
public String handleFileUpload(UserFileReq req) { ? ?
// 文件和參數(shù) 都在實體中了
}

3.接收參數(shù),將文件放到接收參數(shù)中

這種方法適合接收單個文件參數(shù),多參數(shù)還是建議用對象接收,方便擴展

@PostMapping(value = "/upload") ? ?
@ResponseBody ? ?
public String handleFileUpload(MultipartFile file) { ? ?
}

4.一個坑,使用第二種方法的時候

一定不要加@RequestBody,加了這個注解,就會報如下錯誤。

{
?"timestamp": 1571196217195,
?"status": 415,
?"error": "Unsupported Media Type",
?"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
?"message": "Content type 'multipart/form-data;boundary=2gOOYeFBpE;charset=UTF-8' not supported",
?"path": "/file/upload"
}

所以,接收文件,不要使用@RequestBody注解

但是@Validated注解(校驗參數(shù)的注解)是可以使用的。

SpringBoot接口同時接收J(rèn)SON數(shù)據(jù)和文件時遇到的問題

最近公司有一個需求,需要通過一個接口上傳處理好的數(shù)據(jù),由于數(shù)據(jù)太復(fù)雜,所以就采用了JSON格式提交數(shù)據(jù),接口通過@RequestBody獲取數(shù)據(jù)并且映射到對應(yīng)的對象去,這塊需要注意的一個問題就是前端在提交數(shù)據(jù)的時候需要將HTTP的Headers頭里的Content-Type設(shè)置成application/json才行,本來寫好測試完大功告成了,結(jié)果突然又改需求了。。要求在提交數(shù)據(jù)的時候同時上傳一個文件,于是便查詢了一下資料,發(fā)現(xiàn)@RequestBody對應(yīng)的類型是application/json,而文件Multipart對應(yīng)的類型是multipart/form-data,這兩種格式不兼容,所以無論怎么寫都是調(diào)用失敗的。

原始代碼如下

image.png

經(jīng)過調(diào)查發(fā)現(xiàn)有兩種辦法解決問題

首先都是將Content-type類型設(shè)置為multipart/form-data;

1.簡化參數(shù),將JSON參數(shù)抽取出來,參數(shù)傳遞過去后再重新拼接。

image.png

2.將@RequestBody修飾的實體參數(shù)當(dāng)做一個JSON字符串傳遞,傳遞過去后通過GSON或者FastJSON轉(zhuǎn)換。

image.png

image.png

因為第二種方法簡單,所以采用了第二種方法。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解使用Spring Security OAuth 實現(xiàn)OAuth 2.0 授權(quán)

    詳解使用Spring Security OAuth 實現(xiàn)OAuth 2.0 授權(quán)

    本篇文章主要介紹了詳解使用Spring Security OAuth 實現(xiàn)OAuth 2.0 授權(quán),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • javaNIO中關(guān)于ByteBuffer的用法

    javaNIO中關(guān)于ByteBuffer的用法

    這篇文章主要介紹了javaNIO中關(guān)于ByteBuffer的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • springboot使JUL實現(xiàn)日志管理功能

    springboot使JUL實現(xiàn)日志管理功能

    這篇文章主要介紹了springboot使JUL實現(xiàn)日志管理功能,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java編程中的檢查型異常與非檢查型異常分析

    Java編程中的檢查型異常與非檢查型異常分析

    這篇文章主要介紹了Java編程中的未檢查型異常與非檢查型異常,以及異常的處理方式,需要的朋友可以參考下
    2017-09-09
  • Spring中HandlerMethod類源碼詳細解析

    Spring中HandlerMethod類源碼詳細解析

    這篇文章主要介紹了Spring中HandlerMethod類源碼詳細解析,HandlerMethod類用于封裝控制器方法信息,包含類信息、方法Method對象、參數(shù)、注解等信息,具體的接口請求是可以根據(jù)封裝的信息調(diào)用具體的方法來執(zhí)行業(yè)務(wù)邏輯,需要的朋友可以參考下
    2023-11-11
  • 跟我學(xué)Java Swing之游戲設(shè)計(2)

    跟我學(xué)Java Swing之游戲設(shè)計(2)

    跟我學(xué)Java Swing之游戲設(shè)計(2)...
    2006-12-12
  • SpringBoot Maven Clean報錯解決方案

    SpringBoot Maven Clean報錯解決方案

    這篇文章主要介紹了SpringBoot Maven Clean報錯解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java創(chuàng)建隨機數(shù)的四種方式總結(jié)

    Java創(chuàng)建隨機數(shù)的四種方式總結(jié)

    這篇文章主要介紹了java的四種隨機數(shù)生成方式的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2022-07-07
  • springboot快速集成mybatis-plus的詳細教程

    springboot快速集成mybatis-plus的詳細教程

    這篇文章主要介紹了springboot快速集成mybatis-plus的教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java?SSM實現(xiàn)前后端協(xié)議聯(lián)調(diào)詳解下篇

    Java?SSM實現(xiàn)前后端協(xié)議聯(lián)調(diào)詳解下篇

    首先我們已經(jīng)知道,在現(xiàn)在流行的“前后端完全分離”架構(gòu)中,前后端聯(lián)調(diào)是一個不可能避免的問題,這篇文章主要介紹了Java?SSM實現(xiàn)前后端協(xié)議聯(lián)調(diào)過程
    2022-08-08

最新評論

读书| 商洛市| 政和县| 渭南市| 会同县| 鄂伦春自治旗| 德昌县| 浦江县| 泗阳县| 龙州县| 永寿县| 灵台县| 宜川县| 湘西| 濮阳市| 宕昌县| 商河县| 宜都市| 林口县| 大余县| 通城县| 河北区| 蒙自县| 南江县| 河南省| 沙洋县| 平泉县| 宜宾市| 巴林左旗| 留坝县| 山西省| 阳谷县| 崇礼县| 河北区| 大埔县| 安泽县| 临武县| 噶尔县| 乌兰浩特市| 梅河口市| 呼和浩特市|