2017-09-14 82 views
0

我正在vert.x的後端工作,並嘗試模擬Postman中的幾件事情,使我的生活更輕鬆。通過郵遞員模擬文件上傳與Vert.x後端

從下面的HTML表單:

<form method="post" enctype="multipart/form-data"> 
    <input id="fileSelect" type="file" name="file" accept=".csv"> 
    <input type="submit"> 
</form> 

我送文件上傳到vert.x.在服務器端,我在Java代碼中執行以下檢查以確保有效的POST:

String contentType = req.getHeader(HttpHeaders.CONTENT_TYPE); 
boolean isMultipart = contentType != null && contentType.contains("multipart/form-data"); 
Set<FileUpload> uploads = context.fileUploads(); 
if (uploads.size() == 1 && (isMultipart)) { 
// Do the processing  
} 

如果我執行這個來自瀏覽器,一切工作正常。如果我試圖通過郵遞員嘲笑它,uploads.size總是等於0

我現在的郵遞員配置這個具體要求是:

  • Content-Type設置爲multipart/form-data
  • 身體作爲form-data,與key設置爲file,value類型設置爲file從下拉列表中選擇相應的CSV文件路徑。

問題根源在於vert.x如何通過POST來處理文件上傳,還是郵差無法完全模仿瀏覽器行爲?

謝謝你一如既往的幫助!

回答

0

如果有人曾經有類似的問題,不知何故在清除所有郵遞員headers能夠正常工作,即我沒有設置Content-type了,這似乎有點奇怪...... 打無論如何,它的作品,我希望它有一天會幫助別人。

1

當您指定內容類型multipart時,您應該通過調用'request.expectMultipart(true)'指示vertx正確處理它,這樣多部分解析器將解析正文。然後,您可以設置與正文解析相關的上傳和事件處理程序。