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

Angulal-Spring:如何将文件+json对象传递给WS?

浦修文
2023-03-14

在angular方面,我传递我的file+json对象:

const formData: FormData = new FormData();
formData.append('fabricDTO', JSON.stringify(classToPlain(fabric)));
formData.append('file', picture);
return this.http.Post(this.SAVE_FABRIC_URL, formData)
@RestController
@RequestMapping(value = "fabric")
public class FabricController {

    @Autowired
    IFabricService fabricService;


    @PreAuthorize("#oauth2.hasScope('foo') and #oauth2.hasScope('read')")
    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<Collection<FabricDTO>> getUserFabrics() {
        ...
    }

    @PreAuthorize("#oauth2.hasScope('foo') and #oauth2.hasScope('read')")
    @RequestMapping(method = RequestMethod.POST)
    public ResponseEntity saveUserFabrics(@RequestBody FabricDTO fabricDTO, 
            @RequestParam("file") MultipartFile file) {
    ...
    }

}
@Bean(name = "multipartResolver")
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(1000000);
        return multipartResolver;
    }

这是我在chrome控制台中看到的,在表单数据中:

fabricDTO: {"fabricTypeId":4,"comment":"sdf"}
file: (binary)

FabricDTO是:

private int id;
private float length;
private String comment;
private int fabricTypeId;

但当我发送呼叫WS时,我得到了错误:

如果我不在formData中添加DTO而在controller中注释“@RequestBody FabricDTO FabricDTO”,我就能够获得该文件。

THX

共有1个答案

阙博容
2023-03-14

尝试使用@RequestPart

@ResponseBody
public ResponseEntity saveUserFabrics(@RequestPart FabricDTO fabricDTO, 
    @RequestPart MultipartFile file) { //Do your magic here }

正如这里的同行们所做的:我们可以在Spring中一起使用multipart和@requestbody吗?

 类似资料:
  • 我在示例中看到如何将消息字符串传递给亚马逊 sns sdk 的发布方法。但是,是否有如何将自定义对象作为消息传递的示例?我尝试将“消息结构”设置为“json”,但随后我得到错误。我应该将对象值传递到参数中的哪个位置? 有什么例子吗?

  • 问题内容: 我必须在6个以上的环境中运行相同的其余api脚本集。因此,我已将所有测试数据和端点/资源路径存储在json文件中。然后,我尝试将此json文件读入我的karate- config.js文件,这是因为我要获取与从命令行(karate.env)传递的环境相对应的数据,该环境正在读入我的空手道-config.js文件 以下是我的json文件示例 下面是我的karate-config.js文件

  • 问题内容: 我正在使用,在网上找到了几个示例。我设法创建此代码以发出请求: 一切正常。但是假设我想将第三个参数传递给该方法,则该参数称为。数据参数是这样的对象: 没有创建该怎么办?我的PHP 等待json输入,因此应该正确发送json。但是我该怎么做呢?谢谢。 问题答案: 您问题的直接答案是:否。方法的签名如下: 公共任务PostAsync(Uri requestUri,HttpContent内容

  • 问题内容: 我很难将Flask / Python变量传递给Javascript。 基本上,我是从MySQL导入的,并尝试以三种不同的方式呈现返回值。 那是我的dict项目上运行以下命令时的输出。 此方法不好,但是我添加了详细信息,根本不是正确的格式。 我直接将python dict传递给看起来像这样的模板 然后在模板方面,我尝试了以下JavaScript行 没有一个可以一起工作或单独工作。 我也尝

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

  • 我正在使用,我在网上找到了几个例子。我成功地创建了这个代码,用于发出请求: 一切正常。但是假设我想把第三个参数传递给方法,一个名为的参数。数据参数是这样一个对象: 如果不创建,我怎么做?我的php等待json输入,因此应该正确发送json。但是我怎样才能用微软做到这一点呢。网Http?谢谢