文件上传

文件上传

文件上传功能需要前台功能和后台功能共同配合完成

前台:文件上传的三要素

  • 页面提供文件上传的表单元素
  • 在这里插入图片描述
    form表单enctype属性的值为multipart/form-data
    在这里插入图片描述
  • 表单的提交方式必须是POST,get方式无法提交大量的数据

后台:可以使用的技术有很多,在此处我们使用apache提供的commons-fileupload组件完成文件上次操作,后台的操作步骤如下

  • 确认请求操作是否支持文件上传
  • 创建磁盘工厂对象,用于将页面上传的文件保存到磁盘中
  • 获取servet文件上传核心对象
  • 读取数据
  • 对读取到数据中的文件表单进行操作,并将内容写到指定位置
    private void toTestUpload(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/WEB-INF/pages/store/question/testFileUpload.jsp").forward(request,response);
    }

    private void testUpload(HttpServletRequest request,HttpServletResponse response) throws Exception {
        //1.确认该操作是否支持文件上传操作,enctype="multipart/form-data"
        if(ServletFileUpload.isMultipartContent(request)){
            //2.创建磁盘工厂对象
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //3.Servlet文件上传核心对象
            ServletFileUpload fileUpload = new ServletFileUpload(factory);
            //4.从request中读取数据
            List<FileItem> fileItems = fileUpload.parseRequest(request);

            for(FileItem item : fileItems){
                //5.当前表单是否是文件表单
                if(!item.isFormField()){
                    //6.从临时存储文件的地方将内容写入到指定位置
                    item.write(new File(this.getServletContext().getRealPath("upload"),item.getName()));
                }
            }
        }

    }
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页