Java - 在内存中创建 csv 并转换为 MultipartFile[]



我需要将一些数据作为 csv 文件附加到电子邮件中,我正在寻找一种在内存中创建 csv 的方法,然后传递给仅接受附件作为 MultipartFile[] 的现有函数。

我已经将csv保存到磁盘,但不知道如何跳过该步骤/将其转换为MultipartFile[]。

我认为您有不同的方法可以做到这一点。

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
// read the csv file from disk
File csvFile = new File("/path/to/your/file.csv");
try(InputStream csvFileInputStream = new FileInputStream(csvFile)) {

// create a ByteArrayMultipartFileEditor
ByteArrayMultipartFileEditor byteArrayMultipartFileEditor = new ByteArrayMultipartFileEditor();

// set the data in the byteArrayMultipartFileEditor
byteArrayMultipartFileEditor.setValue(csvFileInputStream);

// create a MultipartFile[]
MultipartFile[] multipartFiles = {byteArrayMultipartFileEditor.getValue()};

// pass the multipartFiles to your existing function
yourFunction(multipartFiles);
}

ByteArrayMultipartFileEditor将输入流转换为名为multipartFilesMultipartFile[],该可以传递给现有函数。

还有另一种方式。

...
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.nio.file.Files;
File csvFile = new File("/path/to/your/file.csv");
FileItem fileItem = new DiskFileItem("file", Files.probeContentType(csvFile.toPath()), false, csvFile.getName(), (int) csvFile.length(), csvFile.getParentFile());
CommonsMultipartFile multipartFile = new CommonsMultipartFile(fileItem);
yourFunction(new MultipartFile[] { multipartFile });

我希望这能回答你的问题。

最新更新