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

在Spring Boot REST API中上传文件

拓拔富
2023-03-14

我正在尝试使用Spring Boot@RestController上载一个文件:

    @RequestMapping(value = "/register", method = RequestMethod.POST)
public AppResponse registerUserFromApp(
        @RequestBody UserInfo userInfo,
        @RequestParam(value = "file", required = false) CommonsMultipartFile file,
        @RequestParam(value = "inviteCode", required = false) String inviteCode){

我尝试将此添加到RequestMapping:

@RequestMapping(value = "/register", method = RequestMethod.POST, consumes = "multipart/form-data")

这给了我同样的错误。

spring.http.multipart.enabled=false

同样的错误。我还尝试了multipartfile而不是commonsmultipartfile,完全没有区别。

我做错了什么?我希望将图像作为文件和userinfo对象发送到请求中。邮递员的例子将非常感谢。

共有1个答案

禹智渊
2023-03-14

带有自定义对象的多部分表单数据将作为字符串接受。因此您的控制器将如下所示。

@RequestMapping(value = "/register", method = RequestMethod.POST)
public AppResponse registerUserFromApp(
    @RequestBody String userInfo,
    @RequestParam(value = "file", required = false) CommonsMultipartFile file,
    @RequestParam(value = "inviteCode", required = false) String inviteCode){

    ObjectMapper obj=new ObjectMapper();
    UserInfo userInfo=obj.readValue(clientData, UserInfo.class);

}

您必须使用ObjectMapper将String转换为pojo。希望这能有所帮助。

 类似资料:
  • 我知道这是一个非常普遍的问题,但我无法在Angular 2中上传文件。我试过了 1) http://valor-software.com/ng2-file-upload/和 2) http://ng2-uploader.com/home ...但是失败了。有人用Angular上传过文件吗?你用了什么方法?如何做到这一点?如果提供任何示例代码或演示链接,我们将不胜感激。

  • 问题内容: 我正在尝试在我的GAE应用程序中上传文件。如何使用Go和使用在Google App Engine中上载文件? 问题答案: 我设法通过使用中间返回参数“其他”解决了我的问题。以下这些代码位于上传处理程序中 然后分配相应的formkey 并在我的结构值分配中像这样使用它 并非100%肯定这是正确的做法,但这解决了我的问题,它现在将图像上传到blobstore,并将其他数据和blobkey保

  • 问题内容: 我已经做了很多研究,找到了.NET的上载组件,可以用来上载大文件,具有进度条并可以继续上载大文件。我遇到了一些组件,例如AjaxUploader,SlickUpload和PowUpload,仅举几例。这些选项中的每一个都需要花钱,只有PowUpload可以执行断点续传,但是它使用Java applet来完成。我愿意为一个能够很好地完成这些工作的组件付费,但是如果我自己编写,那将是最好的

  • 问题内容: 我需要从基于Webapp2(Python)的Google App Engine应用程序中的表单中上载和处理CSV文件,我知道我可以使用blobstore临时存储文件,但我很想知道是否有一种方法可以处理该文件无需存储它。 问题答案: 上传文件的内容在您的处理程序中,因此您可以使用以下方式获取该内容(例如,假设上传文件的字段名为) 因此,现在您将内容作为字符串-可以根据需要对其进行处理。当

  • 我正在尝试使用多部分实体方法上传文件。但它失败,错误说{“错误”:“文件参数值'无'无效”} 我的代码是: File File = new File(" C:/Users/SST-06/Desktop/new . txt "); 我的实体文件包含所有提到的参数。 -hkYO-pblk 0 uqlxjtvklrbkosxz 7 mye-8 wbvbvanx Content-Disposition:f

  • 我想将文件从一台服务器上传到另一台FTP服务器,以下是我的上传文件代码,但它抛出错误为: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 这是我的代码: 你能告诉我哪里出了问题吗?

  • 问题内容: 有很多关于使用go 发布文件的教程,但是几乎总是以这样的方式开始: 也就是说,您将整个文件读入内存,然后将其转换为并将其传递给请求,如下所示: 如果您想发布海量文件并避免将其读取到内存中,而是将文件分块蒸出……您将如何做? 问题答案: 如果需要设置,可以手动完成。以下代码段是将文件和其他参数作为流上传的示例(基于Golang中无缓冲区Multipart POST的代码 )

  • 问题内容: 我无法正常上传多个文件。当我选择x个文件时,它成功完成,但是第一个文件被上传了x次,而其他文件则根本没有被上传。有人能指出我做错了吗? 形成: 处理文件: 问题答案: 如果有人感兴趣的话,可以像这样工作: 如果可能的话,很高兴获得带有Blob对象数组的可行解决方案,而不必要求request.args.get(“ __ UPLOADS”)。