我想提取文件路径,然后可以上传到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中获取参数的名称,大小,因此它存在,但是如何从中获取路径?
答案 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变量后就可以得到想要的值了。
这种方式对我有用。希望能帮到你。