当前位置: 首页 > 知识库问答 >
问题:

springrest和springboot:上传MultipartFile和Json对象作为参数

彭衡
2023-03-14

我知道这个问题以前在stackoverflow上被问过。然而,我还没有找到一个答案来实际测试服务,例如使用Postman。

我已经按照留档和我的服务是几乎相同的描述留档:

@PostMapping("/someUrl")
public ResponseEntity<Void> uploadFile(@RequestPart(name="foo", required = false) Foo foo, @RequestPart("file") MultipartFile file) {
    return new ResponseEntity<>(OK);
}

当我尝试使用Postman加热我的服务时,我得到了以下错误:

org.springframework.web.multipart.多部分异常:当前请求不是多部分请求

在《邮递员》杂志上,我得到了如下回报

问题是:是否可以使用邮递员呼叫我的服务?如果是,我缺少什么参数?

共有2个答案

邢小云
2023-03-14

看起来Postman在使用json数据的多部分文件时出现了一些问题。https://github.com/postmanlabs/postman-app-support/issues/576

您可以使用curl测试您的服务,如下所示。

curl -v -H "Content-Type:multipart/form-data" -F "foo={\"teste\":\"abc\"};type=application/json" -F "file=@amazon.png"  http://localhost:8080/v1/files/someURL
盖锦程
2023-03-14

是的,可以使用邮递员呼叫您的服务。

不要将JSON作为文本发送,而是创建一个包含要发送的JSON数据的文件(例如test.json):

{
    "teste": "abc"
}

然后在表单数据部分将foo字段的类型从文本更改为文件,并选择您创建的JSON文件。

就这样。单击“发送”,您的请求将得到处理,不会出现任何错误。

注意:标题应保留为空,即不应包含任何自定义内容类型值。

 类似资料:
  • 我有POST方法,我想发送一个图像和一个JSON对象。这是我的方法: 我不明白我的问题在哪里,邮递员的要求还是我的方法? 这是我的分类模型:

  • 我已经查看了各种答案,但它们并没有解决我的问题。我有一个非常具体的客户需求,我无法使用请求的主体。 我已经检查了这些帖子: 尝试使用Spring Boot REST从POST读取JSON字符串 使用Jackson JSON在Spring MVC中解析JSON 在Rest web方法中传递JSON对象 注意:我确实对URI进行了编码。 我得到各种错误,但非法的超文本标记语言字符是一个。要求很简单:

  • 问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更

  • 我正在将JavaWeb应用程序转换为Spring框架,并感谢一些关于我在文件上传方面面临的问题的建议。原始代码是用org.apache.commons.fileupload. > Spring多部分文件是否包装了组织?apache.commons.文件上传,或者我可以从我的POM文件中排除这个依赖关系? 我看到了以下示例: 最初我试图按照这个例子,但总是得到一个错误,因为它无法找到这个请求参数。因

  • 问题内容: 我有以下内容,但它不起作用,我在stackoverflow上的某个地方读到了它的工作原理,但我似乎无法使其工作..它出错了……我在做错什么吗? 如果我确实传递了这样的数据-它可以工作-所以我知道我的服务正在工作 问题答案: 我相信代码将在对象上调用.value或.toString(),然后通过网络传递。您想传递JSON。 因此,包括JSON JavaScript库 http://www

  • 问题内容: 我有一个复杂的JSON对象,该对象没有任何问题即可发送到View(如下所示),但是当通过AJAX调用将数据序列化回.NET对象时,我无法弄清楚如何将该数据序列化回.NET对象。各个部分的详细信息如下。 我不确定如何将该对象传递给Controller方法,下面有此方法,其中Timelines对象使用Properties镜像上述JS对象。 我正在使用的jQuery是: 我还看到了使用’Js