如何摆脱上传文件中的WebKitFormBoundary

2022-09-04 23:20:07

我正在 Web 应用程序中实现文件上传

前端是用angularJS编写的,并使用angular-file-upload包(可以在此链接中找到的包 https://github.com/nervgh/angular-file-upload)。

后端是Java / Jersey Web Services。

我的问题是:

上传的文件包含 WebKitFormBoundary 页眉和页脚,如下所示:

------WebKitFormBoundarylqskdjlqksdjl
Content-Disposition: form-data; name="upload"; filename="foo.bar"
Content-Type: multipart/form-data

因此,我不确定我是上传文件还是请求。当然,我的后端应用程序认为上传的文件已损坏,除非删除这些行(现在是手动的),否则不会显示它们。

底线是:如何摆脱上传文件中的页眉和页脚?

下面是一些代码示例。

前端

再一次:angularJS angular-file-upload

item.headers = {
    'Content-Disposition': 'attachment; filename="' + item.file.name + '"',
    'Content-Type': 'multipart/form-data'
};

后端

和爪哇/泽西岛

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("someurl/{fileName}")
public Artifact uploadArtifact(InputStream uploadedStream, @PathParam("fileName") String fileName) throws Exception;

注意

我想知道在我的angularJS部分中是否可能是什么搞砸了它?Content-Disposition: attachment

而且它应该是?Content-Disposition: form-data

提前!


答案 1

您需要放置@FormDataParam注释才能正确处理边界。

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("someurl/{fileName}")
public Artifact uploadArtifact(
    @FormDataParam("file") InputStream uploadedStream,
    @FormDataParam("file") FormDataContentDisposition fileDetails,
    @PathParam("fileName") String fileName) throws Exception;

答案 2

推荐