Vraag Bestand converteren naar MultiPartFile


Is er een manier om een ​​File-object naar MultiPartFile te converteren? Zodat ik dat object naar methoden kan sturen die de objecten accepteren MultiPartFile interface?

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
}

22
2018-05-20 11:30


oorsprong


antwoorden:


MockMultipartFile bestaat voor dit doel. Zoals in uw fragment als het pad bekend is, werkt de onderstaande code voor mij.

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);

19
2017-09-13 06:37



    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));

8
2018-06-02 05:35



MultipartFile multipartFile = new MockMultipartFile("test.xlsx", new FileInputStream(new File("/home/admin/test.xlsx")));

deze code is goed voor mij. Je kunt het proberen.


5
2017-10-27 01:59



    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);

Je hebt de

    fileItem.getOutputStream();

omdat het anders NPE zal werpen.


4
2017-12-13 17:04



In mijn geval, de

fileItem.getOutputStream();

werkte niet. Dus maakte ik het zelf gebruikend IOUtils,

File file = new File("/path/to/file");
FileItem fileItem = new DiskFileItem("mainFile", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.length(), file.getParentFile());

try {
    InputStream input = new FileInputStream(file);
    OutputStream os = fileItem.getOutputStream();
    IOUtils.copy(input, os);
} catch (IOException ex) {
    // do something.
}

MultipartFile multipartFile = new CommonsMultipartFile(fileItem);

3
2018-04-20 12:53