簡體   English   中英

嘗試在 jave 中上傳圖像時出現 NoSuchFileException

[英]NoSuchFileException when trying to upload image in jave

當我嘗試使用 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) 您的代碼段不包含此內容; 大概它會比你粘貼的更遠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM