request学习---文件上传

来源:互联网 发布:淘宝 延长收货使用规则 编辑:程序博客网 时间:2024/05/16 15:52

需求:利用网页表单提交文件,上传至服务器。

前端页面表单 enctype=”multipart/form-data”

<form action="upload" method="post" enctype="multipart/form-data">            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            上传文件:<input type="file" name="up1"/><br/><br/>            文件描述:<input type="text" name="desc"/><br/><br/>            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            上传文件:<input type="file" name="up1"/><br/><br/>            文件描述:<input type="text" name="desc"/><br/><br/>            <input type="submit" value="提交"/>        </form>

后台服务器:通过request流的方式接受过来看看。
我上传的文件如下,文件名:a.txt

这里写图片描述

通过request收到后台,输出来
解析代码

InputStream in = request.getInputStream();        BufferedReader br = new BufferedReader( new InputStreamReader(in));        String line=null;        while( (line=br.readLine())!=null){            System.out.println(line);        }

输出内容
这里写图片描述

只要把这个内容解析出来,在通过流生成文件,就完成了文件上传。

可是———–我不会。

只能调用别人的包了。这两个包(导入lib目录下)
这里写图片描述

剩下的代码就变成这样的啦。 我已经写好了的啦

public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        //在POST2方式提交下只能设置文件名字的编码        request.setCharacterEncoding("utf-8");        //创建一个用来存储上传临时文件的类(不创建Tomcat会采用默认的)         // 参数:缓存文件大小,路径; 缓存文件达到5*1024B时就会刷缓存         FileItemFactory f = new DiskFileItemFactory(1024*5, new File("E/a"));        //文件上传的解析器        ServletFileUpload upload = new ServletFileUpload(f);        //设置单个文件的最大文件大小:3M        upload.setFileSizeMax(1024*1024*3);        //设置所有文件的容量:30M        upload.setSizeMax(1024*1024*3*10);        try {            List<FileItem> list = upload.parseRequest(request);            //表单提交两种类型:POST1普通表单(信息)提交、POST2文件上传提交;            for(FileItem fi:list){                //fi.isFormField():true---POST1; false---POST2                if(fi.isFormField()){                    //拿到POST1方式提交的内容                    String str = fi.getString("utf-8");                    System.out.println("文件描述:"+str);                }else{                    //拿到上传的文件名                    String name = fi.getName();                    if(fi.getSize()==0){                        continue;                    }                    String ext = name.substring(name.lastIndexOf('.'));                    String fileName = UUID.randomUUID().toString().replaceAll("-", "")+ext;                    System.out.println("文件名:"+fileName);                    //拿到上传文件的流:文件内容导入流                    InputStream in = fi.getInputStream();                    //拿到文件存放的位置                    String path = getServletContext().getRealPath("/uploads");                    //再通过工具类帮忙把文件内容考到知道路径                    FileUtils.copyInputStreamToFile(in, new File(path+"/"+fileName));                }            }        } catch (FileUploadException e) {            e.printStackTrace();        }    }
原创粉丝点击