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

上传带有附加信息的多个文件(Spring RestController)

席俊
2023-03-14

我知道有很多问题涉及这个主题,但我不知道如何达到以下要求。

@NoArgsConstructor
@Getter
public class SkillsVerificationData {

   String type; // this information is related to the file 
   MultipartFile file;
}

问题1:RestController是否可以使用包装器对象实现这样的映射?(参见所引用问题的第一个答案-@modelattribute)

问题2:使用上述问题中回答的以下控制器方法

@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = { "multipart/form-data" })
public void upload(@RequestPart("type") @Valid String type,
        @RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {
}

我假设它适用于单个文件。如何定义/描述请求部分以实现列表 skillsverificationdata[]?

提前道谢!

共有1个答案

周承天
2023-03-14

如果我正确理解您的问题,您希望上传文件列表以及特定于每个文件的特定信息。我可以用一个例子来说明问题。用户希望上载候选人的技术简介或简历列表以及候选人信息。如果是这种情况,您可以创建一个由多部分文件和json结构组成的数组,该json结构包含关于每个唯一文件名的信息,以及json结构中的唯一id和候选信息。如果这是需要的,您可以参考下面的代码。

@PostMapping(
      value = "/multiUpload",
      consumes = {MediaType.MULTIPART_FORM_DATA_VALUE},
      produces = MediaType.TEXT_PLAIN_VALUE)
  public ResponseEntity<?> uploadingMultipleFiles(
      @RequestParam("files") MultipartFile[] uploadingFiles, @RequestPart(value = "emps", required = true) String empJsonTxt) {
      System.out.println("EMP as Json String = " + empJsonTxt);
      //Process the empJsonTxt
    ObjectMapper objectMapper = new ObjectMapper();
    try {
      Employee emp = objectMapper.readValue(empJsonTxt, Employee.class);
      System.out.println("Now emp = " + emp);
    } catch (IOException e) {
      e.printStackTrace();
    }
    for (MultipartFile uploadedFile : uploadingFiles) {
      System.out.println("Uploaded File Name = " + uploadedFile.getOriginalFilename());
      File file = new File("E:/sure-delete/" + uploadedFile.getOriginalFilename());

    //Upload functionality
      try {
        uploadedFile.transferTo(file);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return ResponseEntity.ok("All Files uploaded successfully ...");
  }

在本例中,empJsonTxt是一个json内容字符串,其中包含有关员工及其简历/配置文件的所有必需信息。多部分文件将只用于上载。不过,您可以根据您的要求对此零件进行推断。这是可行的,可能还有更多的好方法。

 类似资料:
  • 本文向大家介绍带有多个进度条的HTML5文件上传,包括了带有多个进度条的HTML5文件上传的使用技巧和注意事项,需要的朋友参考一下 为了使其正常工作,您需要解决xhr progress事件,该事件在所有列表项都已创建后就会触发。 该XHR 应该知道你想做什么-

  • 问题内容: http://www.mkyong.com/webservices/jax-rs/file-upload-example-in- jersey/ 我正在遵循本指南并遇到问题。我有一些问题。 是否所有依赖项都必须对应?我的项目有一些org.glassfish.jersey依赖项,本指南建议使用org.sun.jersey。我是否也必须使用相同的版本进行更改? 我有这个错误 这是我的网络服

  • 我有一个log4j2 json配置文件,但似乎无法在Appender部分中放置多个“file”附加符。我想做的是用日志语句记录两个两个文件:一个文件是用于info级别或更高级别的,而另一个文件是调试级别的。 }

  • 我是web服务新手,正在开发一个文档管理系统,并尝试使用Jersey restful web服务保存文件和多个对象。 我的网站。xml 运行此服务后,我面临以下错误 项目库是 所以,我找不到任何解决方案,是否有任何不同的方法可以通过一个rest调用上载具有多个对象的文件。 请在这方面指导我。

  • 为什么我的文件上载到而不是。并将所有二进制文件数据解析为unicode字符串。 接下来,我在Python请求中进行测试。以下代码: 而服务器端输出则相反:

  • 问题内容: 我遇到了这个简单的js ajax上传代码(由于某种原因,jquery 似乎不适用于HTML5), 但是我这里有两个问题, 这条线在物体之后是什么意思? 为什么在那里需要ID?我能做些什么使用jQuery 用? 此ajax仅用于单个文件上传,如何更改多个文件上传? 问题答案: 这行在对象FormData之后是什么意思? 在得到由它的ID元件。该抓住从元件中的第一选择的文件。将其追加到与字