欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

服务器端获取数据(二)

程序员文章站 2022-05-01 18:33:55
...

这篇博客讲的是服务器端获取文件数据

我们要在Servlet中重写doPost方法(不需要doGet方法了):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  	if(ServletFileUpload.isMultipartContent(request)){//1、判断当前form表单的编码方式是不是为enctype="multipart/form-data"
   		FileItemFactory fileItemFactory = new DiskFileItemFactory();
   		ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
   		servletFileUpload.setFileSizeMax(1024*1024*6*10);
   		List<FileItem> fileItemList = null;
   		try {
    			fileItemList = servletFileUpload.parseRequest(request);//2、将form表单中每个携带数据的标签转换成每个FileItem对象并存到集合中
   		} catch (FileUploadException e) {
    			e.printStackTrace();
    			request.setAttribute("message", "文件太大,上传失败");
    			request.getRequestDispatcher("result.jsp").forward(request, response);
    			return;
   		}
   
   		for(FileItem fileItem : fileItemList){//3、获取form表单所携带的数据
    			if(fileItem.isFormField()){//为true表示为非文件类型的标签
     				String key = fileItem.getFieldName();//summary
     				String value = fileItem.getString();//summary对相的数据
     				System.out.println(key+":"+value);//这里获取的是非文件类型
    			}else{//文件类型
     				try {
      					String oldFileName = fileItem.getName();
      					String fileNameSuffix=oldFileName.substring(oldFileName.lastIndexOf("."));
      					System.out.println(fileNameSuffix);
      					String fileNamePrefix = UUID.randomUUID().toString();
      					//fileItem.write(new File("D:\\"+fileNamePrefix+fileNameSuffix));//未发布路径
      
      					String path = "D://"+fileNamePrefix+fileNameSuffix;
      					fileItem.write(new File(path+fileNamePrefix+fileNameSuffix));//发布路径
      					System.out.println(path);
     				} catch (Exception e) {
      					e.printStackTrace();
     				}
    			}
   		}
   		request.setAttribute("message", "文件上传成功");
   		request.getRequestDispatcher("result.jsp").forward(request, response);
  	}else{
   		request.setAttribute("message", "当前form表单enctype属性的属性值非multipart/form-data");
   		request.getRequestDispatcher("result.jsp").forward(request, response);
  	}
 }

我们需要在form中添加一个上传文件的标签

这时我们需要再修改一下form的标签属性
服务器端获取数据(二)

这时我们需要再创建一个jsp文件
服务器端获取数据(二)
在body中写如上一行代码,这样就OK了。

相关标签: 连接