gpt4 book ai didi

java - 尝试在 java 中上传图像时出现 NoSuchFileException

转载 作者:行者123 更新时间:2023-12-01 19:19:23 25 4
gpt4 key购买 nike

当我尝试使用 post 方法通过表单上传文件时,会发生 NoSuchFileException 类型的错误,但我不知道为什么。

这是代码:

if (req.getPart("file") != null) {
Part file = req.getPart("file");
String fileName = file.getSubmittedFileName();
DiskFileItemFactory factory = new DiskFileItemFactory();
File repository = new File("./uploads");
factory.setRepository(repository);
try {
File thisFile = new File(repository, fileName);
try (InputStream input = file.getInputStream()) {
Files.copy(input, thisFile.toPath());
}
} catch (IOException e) {
e.printStackTrace();
}
UserDao.getInstance().addPicture("./uploads" + fileName, oldUser);
UserDao.getInstance().update(user, oldUser);
}

我确信出了什么问题,但我看不到它......有人可以帮助我吗?

一开始我有这个代码,但试图解决错误我改变了它:

 Part file = req.getPart("file");
String filename = file.getSubmittedFileName();
DiskFileItemFactory factory = new DiskFileItemFactory();
File repository = new File("./uploads");
factory.setRepository(repository);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(req);

File thisFile = new File(repository, filename);

try (InputStream input = file.getInputStream()) {
Files.copy(input, thisFile.toPath());
}
} catch (FileUploadException e) {
e.printStackTrace();
}

这是堆栈跟踪:

java.nio.file.NoSuchFileException: ./uploads/photo.jpeg
java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478)
java.base/java.nio.file.Files.newOutputStream(Files.java:223)
java.base/java.nio.file.Files.copy(Files.java:3143)
com.marcosvalens.controller.UserFormController.doPost(UserFormController.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
com.marcosvalens.interceptor.RequestLoginFilter.doFilter(RequestLoginFilter.java:39)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

最佳答案

您创建了一个DiskFileItemFactory,然后,显然,您祈祷它能做一些事情。这不是您使用此 API 的方式;您必须将 factory 变量传递给构造函数:new ServletFileUpload(factory)。您的代码片段不包含此内容;想必它会比您粘贴的内容更高。

关于java - 尝试在 java 中上传图像时出现 NoSuchFileException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379330/

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