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

在使用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文件中,空文件不会被创建文件夹!在这里插入图片描述

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值