JavaWeb学习—文件上传

一、 上传和下载文件的介绍:

1.上传和下载文件时的http内容是以表单的形势存在的,每个表单以boundary分隔符

二、文件上传

  1. 文件上传的界面

(1)、页面上要有一个from标签,请求为post请求
(2)、form标签要有一个encType属性,且值为multipart/form-data
(3)、在form标签中使用input type = file获取上传文件
(4)、编写服务器代码接收,处理上传数据
下面展示一些 。

<form action="***" method="post" enctype="multipart/form-data">
    用户名:<input type="text" name="username" /> <br>
    头像:<input type="file" name="photo" > <br>
    <input type="submit" value="上传">
</form>
  1. Servlet程序
    我们这次使用一个第三方提供的jar包:commons-fileupload-1.2.1.jar和commons-io-1.4.jar。相应的jar包可到以下链接下载或自行下载
    链接:https://pan.baidu.com/s/11apw514PqfLNBUM7P4Ybmw
    提取码:nhbk
    (1)、创建一个Servlet
    (2)、现在Web.xml中配置好相应的Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    if(ServletFileUpload.isMultipartContent(request) ){//判断上传的数据是不是以表单的形式上传,是的话就是上传文件,反之则不是
        //创建FileItemFactory工厂实现类
        FileItemFactory fileItemFactory = new DiskFileItemFactory();
        //创建用于解析数据的工具类ServletFileUpload
        ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
        //解析上传的数据,得到每一个表单项FileItem
        try {
            List<FileItem> list = servletFileUpload.parseRequest(request);

            for(FileItem fileItem : list){
                if(fileItem.isFormField()){
                    //这里是普通表单
                    System.out.println("name:"+fileItem.getFieldName());
                    System.out.println("value:"+fileItem.getString("UTF-8"));
                }else{
                    //上传的文件值
                    System.out.println("表单的name属性:"+fileItem.getFieldName());
                    System.out.println("上传的文件名"+fileItem.getName());
                    try {
                        //将文件保存到相应的目录
                        fileItem.write(new File("E:\\uninstall\\"+fileItem.getName()));
                        System.out.println("保存成功");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }
}