如何从MultipartFile提取文件路径

时间:2019-04-30 09:11:16

标签: java upload drive

我想提取文件路径,然后可以上传到Google驱动器。如何从MultipartFile获取路径?

    //logger.info(""+uploadFile.getClass().getResource("").getFile().getPath());
    //System.out.println(uploadFile.getClass().getResource("").getPath());

还尝试将MultipartFile转换为File,但是由于“ import com.google.api.services.drive.model.File;”而无法“导入java.io.File”。不能兼容。我认为。已经使用drive.model.File了很多。

@Override
public int uploadFile(HttpSession session, MultipartFile uploadFile) throws Exception {
    // TODO Auto-generated method stub
    File fileMetadata = new File();

    Drive driveService = getCredential(session);

    fileMetadata.setName(uploadFile.getOriginalFilename());
    logger.info(uploadFile.getResource().getFile().getAbsoluteFile().getPath());
    //logger.info(""+uploadFile.getClass().getResource("").getFile().getPath());
    //System.out.println(uploadFile.getClass().getResource("").getPath());

    java.io.File filePath = new java.io.File("need to input file path here");
    FileContent mediaContent = new FileContent("image/jpeg", filePath);
    File file = driveService.files().create(fileMetadata, mediaContent).setFields("id").execute();
    System.out.println("File ID: " + file.getId());

    return 0;
}
带有路径[]的上下文中Servlet [appServlet]的

Servlet.service()抛出异常 java.io.FileNotFoundException:MultipartFile资源[uploadFile]无法解析为绝对文件路径

我可以从MultipartFile中获取参数的名称,大小,因此它存在,但是如何从中获取路径?

2 个答案:

答案 0 :(得分:1)

您不需要文件路径即可将文件上传到任何地方。请改用multipartFile.getInputStream()multipartFile.getBytes()。实际上,在获取文件时,您不知道文件的路径(这不是一个固定的规则,而是与浏览器相关的功能)

答案 1 :(得分:0)

我无法直接从 MultipartFile 中提取文件路径。但是我可以获得 getInputStream() 属性。

然后,考虑到 inputStream 是您的 MultPartFile 变量 .getInputStream(),您可以使用下面的代码。

 StringBuilder resultStringBuilder = new StringBuilder();
    try (BufferedReader br
      = new BufferedReader(new InputStreamReader(**inputStream**))) {
        String line;
        while ((line = br.readLine()) != null) {
            resultStringBuilder.append(line).append("\n");
        }
    }

读取resultStringBuilder变量后就可以得到想要的值了。

这种方式对我有用。希望能帮到你。