如何从多部分表单数据请求中删除http工件? [英] How do I remove http artifacts from a multipart form-data request?

查看:167
本文介绍了如何从多部分表单数据请求中删除http工件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在jersery servlet中有这个方法签名。正在到达servlet,表单数据存在于uploadedInputStream对象中,但是流没有从中删除HTTP工件。

$ b $ p
@POST
@Produces(text / plain)
@Consumes(MediaType .MULTIPART_FORM_DATA)
public String uploadFileIE(
@FormDataParam(qqfile)InputStream uploadedInputStream){

}
$ b当保存到一个文件中时,输入流有这些围绕字节数据的工件:

  ----------------------------- 7dc1f42e3005a8 
Content-Disposition:form-data; name =qqfile; filename =[filename]
Content-Type:application / octet-stream

[来自数据流的字节]
------ ----------------------- 7dc1f42e3005a8--

这些工件不应该在这个时候被移除吗?有没有简单的方法可以删除它们,而不必重新发明轮子? 解决方案

使用泽西岛,你需要消耗标题信息与FormDataContentDisposition对象。杂乱,但必要:

  @POST 
@Produces(text / plain)
@Consumes( MediaType.MULTIPART_FORM_DATA)
public String uploadFileIE(
@FormDataParam(qqfile)InputStream uploadedInputStream,
@FormDataParam(qqfile)FormDataContentDisposition fileDetail){

}


I have this method signature in a jersery servlet. The servlet is being reached and the form data is present in the uploadedInputStream object, but the stream does not have the http artifacts removed from it. See below.

@POST
@Produces("text/plain")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFileIE(
    @FormDataParam("qqfile") InputStream uploadedInputStream ){

}

When saved to a file, the input stream has these artifacts surrounding the byte data:

-----------------------------7dc1f42e3005a8
Content-Disposition: form-data; name="qqfile";filename="[filename]"
Content-Type: application/octet-stream

[bytes from data stream]
-----------------------------7dc1f42e3005a8--

Shouldn't these artifacts be removed already at this point? Is there any easy way to remove them without re-inventing the wheel?

解决方案

With Jersey you need to 'consume' the extra header information with a FormDataContentDisposition object. Messy but necessary:

@POST
@Produces("text/plain")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFileIE(
    @FormDataParam("qqfile") InputStream uploadedInputStream,
    @FormDataParam("qqfile") FormDataContentDisposition fileDetail){

}

这篇关于如何从多部分表单数据请求中删除http工件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆