【问题标题】:Sending a class object to a multipart-form-data-expected web service将类对象发送到多部分表单数据预期的 Web 服务
【发布时间】:2015-04-10 03:42:08
【问题描述】:

这是我的网络服务声明

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
public DeviceDbUploadResponse upload(@FormDataParam("file1") InputStream file1, 
@FormDataParam("file2") InputStream file2,
@FormDataParam("name1") String filename1,
@FormDataParam("name2") String filename2,
@FormDataParam("ID") String ID)

我的网络服务调用

var fd=new FormData();
fd.append("ID",ID);
/* lines of code here */

$.ajax({
         url: 'http://localhost:8080/linterm2m/webapi/m2m/upload',
         data: fd,
         processData: false,
         contentType: false,
         type: 'POST'
       });

到目前为止一切正常。现在需要通过请求对象接收所有数据(文件名和 ID),例如:

public class Request{
    String ID;
    String filename1;
    String filename2;
}

但由于 multipart-form-data 消费类型,我怀疑它是否可以实现。我需要一些启示和解决方案。

【问题讨论】:

  • 如果是基于球衣的服务,你可以得到这样的 "@FormDataParam("file") InputStream uploadStream, @FormDataParam("file") FormDataContentDisposition fileDetail" 和 multipart-form-data
  • 是的,现在看起来很整洁。但仍然需要一个 Request 对象。
  • 你在哪里传递请求对象?对不起,我没有看你的答案。你完成了。伟大的!你可以给我的 cmets 投票

标签: java javascript ajax glassfish multipartform-data


【解决方案1】:

Composing multipart/form-data with a different Content-Type on each parts with Javascript (or Angular)

我尝试按照这个问题的答案进行操作,它可以工作。

fd.append('whole', new Blob([JSON.stringify({
        ID: ID,
        name1:file1.name,
        name2:file2.name,
    })], {
        type: "application/json"
    }));

Request 类就像我提到的那样。 不需要 name1,name2 部分,但我只想使用具有各种属性的对象进行测试。 非常感谢 Naman 对 FormDataContentDisposition 的帮助。

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 2013-03-22
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多