java.io.IOException: java.io.FileNotFoundException: (系统找不到指定的路径。)

    技术2026-02-24  14

    在使用servlet完成图片的上传时发现系统找不到指定的路径没代码如下

    package servlet; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.IOUtils; import pojo.User; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.List; import java.util.UUID; public class FileUpload extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory); User user = new User(); List<FileItem> fileItems =null; try { fileItems = servletFileUpload.parseRequest(req); } catch (FileUploadException e) { e.printStackTrace(); } for(FileItem fileItem :fileItems){ //非文件 if(fileItem.isFormField()){ if("username".equals(fileItem.getFieldName())){ final String string = fileItem.getString("utf-8"); user.setId(Integer.parseInt(string)); } }else { //文件 InputStream inputStream = fileItem.getInputStream(); String name = fileItem.getName(); System.out.println(name); final String realPath = req.getServletContext().getRealPath("/img/"); name = UUID.randomUUID().toString().replaceAll("-","")+"_"+name; user.setImg(req.getContextPath()+"/img/"+name); System.out.println(user.getImg()); System.out.println(realPath+name); FileOutputStream fileOutputStream = new FileOutputStream(realPath+name); IOUtils.copy(inputStream,fileOutputStream); inputStream.close(); fileOutputStream.close(); req.setAttribute("user",user); req.getRequestDispatcher("/pages/img.jsp").forward(req,resp); } } } }

    由于路径都是通过方法获取到的,所以研究了很久之后终于被我发现了一个问题,在项目部署运行时生成的out文件中,空文件不会被创建文件夹!

    解决办法,在文件夹里随便放点东西,让人家生成一下文件夹,当然手动创建也可以。

    Processed: 0.014, SQL: 9