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

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

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

我做了这么多搜索,但失败了。如果有人知道一个好的标准方式,请让我知道?断续器


答案 1

您可以使用该方法获取 的内容,并可以使用以下命令写入文件:MultipartFilegetBytesFiles.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);
}

答案 2

@PetrosTsialiamanis帖子,新文件(multipart.getOriginalFilename()))的小更正,这将在服务器位置创建文件,有时您将面临用户的写入权限问题,并不总是能够向每个执行操作的用户授予写入权限。 将创建临时目录,以便在其中正确创建文件。这样,您就可以创建临时文件夹,其中创建了文件,稍后您可以删除文件或临时文件夹。

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(...)


推荐