如何将多部分文件转换为文件?

新手上路,请多包涵

谁能告诉我将多部分文件 (org.springframework.web.multipart.MultipartFile) 转换为文件 (java.io.File) 的最佳方法是什么?

在我的 spring mvc web 项目中,我将上传的文件作为多部分文件。我必须将其转换为文件 (io),因此我可以调用此图像存储服务 ( Cloudinary )。它们只采用类型 (File)。

我做了很多搜索但都失败了。如果有人知道好的标准方法请告诉我?谢谢

原文由 Amila Iddamalgoda 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

您可以使用 getBytes 方法获取 MultipartFile 的内容,您可以使用 Files.newOutputStream() 写入文件

public void write(MultipartFile file, Path dir) {
    Path filepath = Paths.get(dir.toString(), file.getOriginalFilename());

    try (OutputStream os = Files.newOutputStream(filepath)) {
        os.write(file.getBytes());
    }
}

您还可以使用 transferTo 方法

 public void multipartFileToFile(
    MultipartFile multipart,
    Path dir
) throws IOException {
    Path filepath = Paths.get(dir.toString(), multipart.getOriginalFilename());
    multipart.transferTo(filepath);
}

原文由 Petros Tsialiamanis 发布,翻译遵循 CC BY-SA 4.0 许可协议

@PetrosTsialiamanis 帖子上的小修正, new File( multipart.getOriginalFilename()) 这将在服务器位置创建文件,有时您将面临用户的写入权限问题,并非总是可以向执行操作的每个用户授予写入权限。 System.getProperty("java.io.tmpdir") 将创建临时目录,您的文件将在其中正确创建。这样您就可以创建临时文件夹,在其中创建文件,稍后您可以删除文件或临时文件夹。

 public  static File multipartToFile(MultipartFile multipart, String fileName) throws IllegalStateException, IOException {
    File convFile = new File(System.getProperty("java.io.tmpdir")+"/"+fileName);
    multipart.transferTo(convFile);
    return convFile;
}

将此方法放入您的常用实用程序中,并像使用它一样使用它。 Utility.multipartToFile(...)

原文由 Swadeshi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题