簡體   English   中英

在Spring 5.0.1中無法處理多部分/報表數據。 它僅在請求中檢測到多部分/表單數據

[英]Unable to process multipart/report data in Spring 5.0.1. It is only detecting multipart/form-data in the request

我正在使用Spring 5.0.1和Servlet 3.1.0

當用戶在請求中發送multipart / form-data時,spring能夠解析請求並從中取出零件。
request.getParts()將提供這些部分。

但是,當用戶發送multipart / report(內容類型)時,spring無法正確解析此請求。
它不給出任何異常,但不在請求部分中存儲任何內容。
request.getParts()將返回空數組。

是否需要進行任何配置,以便spring解析任何類型的多部分數據。

在下面發布我的代碼並請求有效負載:

REST API對內容類型沒有任何限制。 它僅將請求和響應作為參數,如下所示:

@RequestMapping (value = "/rest/external/integration/{serviceName}", method = RequestMethod.POST)   
public void executeAssemblyExternal (HttpServletRequest request, 
            HttpServletResponse response, @PathVariable String serviceName)  throws Exception    
{        
      Parts[] requestParts = request.getParts();   
}

與請求一起發送的內容類型標頭是:
內容類型多部分/報告; Report-Type =處置通知; boundary =“ ---- = _ Part_82_645653877.1526452736757”

發送到REST API的多部分數據如下:

------ = _ Part_82_645653877.1526452736757內容類型:文本/純文本; charset = us-ascii內容傳輸編碼:7位

MDN-消息ID:<1088014046.24.1526452734879@MCBKUM03.eur.ad.sag>發件人:SenderAS2收件人:ReceiverAS2接收日期:2018-05-16 at 12:08:56(IST)狀態:已處理評論:這不是保證消息已被接收翻譯者完全處理或理解

------ = _ Part_82_645653877.1526452736757內容類型:消息/處置通知內容傳輸編碼:7位

Reporting-UA:webMethods Integration Server原始收件人:rfc822; ReceiverAS2最終收件人:rfc822; ReceiverAS2原始消息ID:<1088014046.24.1526452734879@MCBKUM03.eur.ad.sag>接收內容MIC:SezQZhP0aSchqB1zCO0Dq4J0u3U =,sha1處置:自動/自動發送MDN; 處理

------ = _ Part_82_645653877.1526452736757--

正如Deinum在評論中提到的那樣,除了multipart / form-data之外,servlet無法處理多部分請求。 因此,編寫了一個自定義的dispatcherServlet,將通過MultipartResolver處理具有標頭Content-Type為多部分且具有除表單數據以外的子類型的請求的情況。

通過執行此request.getInputStream()將具有用戶發送的整個多部分數據。 可以在服務器端對此輸入流執行必要的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM