68

File オブジェクトを MultiPartFile に変換する方法はありますか? インターフェイスのオブジェクトを受け入れるメソッドにそのオブジェクトを送信できるようにするにはMultiPartFile

File myFile = new File("/path/to/the/file.txt")

MultiPartFile ....?

def (MultiPartFile file) {
  def is = new BufferedInputStream(file.getInputStream())
  //do something interesting with the stream
}
4

10 に答える 10

54

この目的のためにMockMultipartFileが存在します。ファイルパスがわかっている場合のスニペットのように、以下のコードが機能します。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.springframework.mock.web.MockMultipartFile;

Path path = Paths.get("/path/to/the/file.txt");
String name = "file.txt";
String originalFileName = "file.txt";
String contentType = "text/plain";
byte[] content = null;
try {
    content = Files.readAllBytes(path);
} catch (final IOException e) {
}
MultipartFile result = new MockMultipartFile(name,
                     originalFileName, contentType, content);
于 2014-09-13T06:37:25.193 に答える
27
File file = new File("src/test/resources/input.txt");
FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile("file",
            file.getName(), "text/plain", IOUtils.toByteArray(input));
于 2015-06-02T05:35:26.157 に答える
6
File file = new File("src/test/resources/validation.txt");
DiskFileItem fileItem = new DiskFileItem("file", "text/plain", false, file.getName(), (int) file.length() , file.getParentFile());
fileItem.getOutputStream();
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);

NPE を防止するには、次のものが必要です。

fileItem.getOutputStream();

また、ファイルが空にならないように、ファイルの内容を fileItem にコピーする必要があります

new FileInputStream(f).transferTo(item.getOutputStream());

于 2013-12-13T17:04:25.210 に答える
6

Mocking クラスなしのソリューション、Java9+ および Spring のみ。

FileItem fileItem = new DiskFileItemFactory().createItem("file",
    Files.probeContentType(file.toPath()), false, file.getName());

try (InputStream in = new FileInputStream(file); OutputStream out = fileItem.getOutputStream()) {
    in.transferTo(out);
} catch (Exception e) {
    throw new IllegalArgumentException("Invalid file: " + e, e);
}

CommonsMultipartFile multipartFile = new CommonsMultipartFile(fileItem);
于 2019-02-23T21:24:23.793 に答える