【问题标题】:how can I extract file path from MultipartFile如何从 MultipartFile 中提取文件路径
【发布时间】:2019-04-30 09:11:16
【问题描述】:

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

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

还尝试将 MultipartFile 转换为文件,但由于“import com.google.api.services.drive.model.File;”而无法“import 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 中获取名称、大小,因此它存在,但我如何从中获取路径??

【问题讨论】:

  • 多部分文件只是用于传输的抽象。它有字节、名称和类型等。但它不知道哪个是源,它真的是一个文件(写入物理驱动器上的字节)......你不能在这一点上获取这些信息,除非您以某种方式传递它(这意味着您必须在创建时将它与多部分捆绑在一起)。检查MultipartFile:: getOriginalFilename 是否对您有用。
  • 这是我选择上传到驱动器的本地文件。我放弃了获得路径。谢谢你的建议!

标签: java upload drive


【解决方案1】:

您不需要文件路径即可将文件上传到任何地方。请改用multipartFile.getInputStream()multipartFile.getBytes()。实际上在获取文件的那一刻你不知道文件的路径(这不是一个可靠的规则,而是一个依赖于浏览器的功能)

【讨论】:

  • 我想将文件上传到谷歌驱动器。所以我只能使用那个库,但我无法获取路径,我必须上传本地并获取路径。谢谢你的帮助
【解决方案2】:

我无法直接从 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变量后就可以得到你想要的值了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2011-04-28
    相关资源
    最近更新 更多