gpt4 book ai didi

spring-mvc - Spring MVC Multipart 文件上传随机 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-03 10:05:26 24 4
gpt4 key购买 nike

我使用spring MVC构建了一个Web应用程序,除了文件上传我得到随机FileNotFoundExceptions之外,一切正常。我在网上找到了一些解决方案,例如使用不同的 tmp 文件夹,但我不断收到随机错误。

我的代码是:

@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("file") final MultipartFile multipartFile,
@RequestHeader("email") final String email, @RequestHeader("password") String password){
if (authenticateUser(email, password)) {
if (!multipartFile.isEmpty()) {
System.out.println("Start processing");
Thread thread = new Thread(){
public void run(){
ProcessCSV obj = new ProcessCSV();
try {
File file = multipartToFile(multipartFile);
if(file !=null) {
obj.extractEvents(file, email, cluster, session);
}
else {
System.out.println("null File");
}
} catch (IOException e) {
System.out.println("File conversion error");
e.printStackTrace();
}
}
};
thread.start();

return "true";
} else {
return "false";
}
}
else {
return "false";
}
}

和:
public File multipartToFile(MultipartFile multipartFile) throws IOException {

File uploadFile = null;

if(multipartFile != null && multipartFile.getSize() > 0) {
uploadFile = new File("/tmp/" + multipartFile.getOriginalFilename());
FileOutputStream fos = null;
try {
uploadFile.createNewFile();
fos = new FileOutputStream(uploadFile);
IOUtils.copy(multipartFile.getInputStream(), fos);
} catch (FileNotFoundException e) {
System.out.println("File conversion error");
e.printStackTrace();
} catch (IOException e) {
System.out.println("File conversion error");
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
System.out.println("File conversion error");
e.printStackTrace();
}
}
}
}
else {
System.out.println("null MultipartFile");
}

return uploadFile;
}

和配置文件:
multipart.maxFileSize: 100MB
multipart.maxRequestSize: 100MB
multipart.location = ${user.home}
server.port = 8090

我使用了不同版本的 multipartToFile 函数,一个是使用 multipartfile.transferTo()但我得到了同样的随机错误。有什么建议吗?

谢谢

编辑堆栈跟踪:
java.io.IOException: java.io.FileNotFoundException: /Users/aaa/upload_07720775_4b37_4b86_b370_40280388f3a4_00000003.tmp (No such file or directory)
at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:121)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile.transferTo(StandardMultipartHttpServletRequest.java:260)
at main.RESTController.multipartToFile(RESTController.java:358)
at main.RESTController$1.run(RESTController.java:241)
Caused by: java.io.FileNotFoundException: /Users/aaa/upload_07720775_4b37_4b86_b370_40280388f3a4_00000003.tmp (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.write(DiskFileItem.java:392)
at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:119)
... 3 more

最佳答案

我遇到了同样的问题,看起来 MultipartFile 在内部使用了不同的当前目录,所以所有非绝对路径都不起作用。
我必须将我的路径转换为绝对路径,然后它才能工作。
它也在 @RestController 和其他 bean 中工作。

Path path = Paths.get(filename).toAbsolutePath();
fileToImport.transferTo(path.toFile());

fileToImport 是 MultipartFile。

关于spring-mvc - Spring MVC Multipart 文件上传随机 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com