2017-09-14 30 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正确处理它,这样多部分解析器将解析正文。然后,您可以设置与正文解析相关的上传和事件处理程序。