この回答は既に回答済みです。最近私はバイト配列オブジェクトをmultipartfileオブジェクトに変換するための要件に取り組んでいました。 これを達成するには2通りの方法があります。
アプローチ1:
あなたはそれを作成するためにFileDiskItemオブジェクトを使用するデフォルトCommonsMultipartFileを使用してください。 例:
Approach 1:
は、あなたがそれを作成するためにFileDiskItemオブジェクトを使用するデフォルトCommonsMultipartFileを使用してください。 例:
FileItem fileItem = new DiskFileItem("fileData", "application/pdf",true, outputFile.getName(), 100000000, new java.io.File(System.getProperty("java.io.tmpdir")));
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
アプローチ2:
は、独自のカスタムマルチパートファイルオブジェクトを作成し、バイト配列をmultipartfileに変換します。
public class CustomMultipartFile implements MultipartFile {
private final byte[] fileContent;
private String fileName;
private String contentType;
private File file;
private String destPath = System.getProperty("java.io.tmpdir");
private FileOutputStream fileOutputStream;
public CustomMultipartFile(byte[] fileData, String name) {
this.fileContent = fileData;
this.fileName = name;
file = new File(destPath + fileName);
}
@Override
public void transferTo(File dest) throws IOException, IllegalStateException {
fileOutputStream = new FileOutputStream(dest);
fileOutputStream.write(fileContent);
}
public void clearOutStreams() throws IOException {
if (null != fileOutputStream) {
fileOutputStream.flush();
fileOutputStream.close();
file.deleteOnExit();
}
}
@Override
public byte[] getBytes() throws IOException {
return fileContent;
}
@Override
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(fileContent);
}
}
上記のCustomMultipartFileオブジェクトを使用する方法です。
String fileName = "intermediate.pdf";
CustomMultipartFile customMultipartFile = new CustomMultipartFile(bytea, fileName);
try {
customMultipartFile.transferTo(customMultipartFile.getFile());
} catch (IllegalStateException e) {
log.info("IllegalStateException : " + e);
} catch (IOException e) {
log.info("IOException : " + e);
}
これは必須PDFを作成し、
おかげintermediate.pdf名前で
java.io.tmpdirの にそれを格納します。
Thats cool。ありがとう兄貴。 –
非常に良い解決策があなたから与えられました。この質問と回答が多くの人々に役立つことを願っています –
'TransferTo'では、書き込み後にFileOutputStreamを閉じるべきですか? – Ascalonian