JavaWeb文件的上传和下载功能简单实现代码

  


  

  

<强> 1,文件上传的原理分析
  

  

,,,,1、文件上传的必要前提:
  

  

,,,,,,,,,,提供形式表单、方法必须是文章
  ,,,,,,,,b,形式表单的enctype必须是多部分/格式
  ,,,,,,,,c,提供输入类型="文件"类的上传输入域

  

,,,,2,enctype属性

  

,,,,作用:告知服务器请求正文的MIME类型(请求消息头:内容类型作用是一致的)
  ,,,,可选值:

  

,,,,应用程序/x-www-form-urlencoded(默认):

  

,,,,,,,,,正文:name=admin&密码=123;

  

,,,,,,,,,服务器获取数据:字符串名称=request.getParameter(“名字”);

  

,,,,多部分/格式:

  

,,,,,,,,,服务器获取数据:request.getParameter(字符串)方法获取指定的表单字段字符内容,但文件上传表单已经不再是字符内容,而是字节内容,所以失效。
  

  

,,,,文件上传:解析请求正文的每部分的内容
  

        & lt; body>   & lt;形式enctype="多部分/格式" action=" $ {pageContext.request。contextPath}/servlet/uploadServlet2”方法=" post "比;   & lt;输入类型="文本" name="名称"/祝辞& lt; br/比;   & lt;输入类型="文件" name="照片"/祝辞& lt; br/比;   & lt;输入类型="提交" value=" https://www.yisu.com/zixun/上传”/祝辞& lt; br/比;   & lt;/form>   & lt;/body>   公开课UploadServlet1扩展HttpServlet {   公共空间doGet (HttpServletRequest请求,HttpServletResponse响应)   抛出ServletException IOException {/*   *由于表单中提交数据的方式改为多部分/格式,所以request.getParameter(“名字”)失效   *字符串名称=request.getParameter(“名字”);   字符串的照片=request.getParameter(“照片”);   System.out.println(名称);   System.out.println(图);*/InputStream是=request.getInputStream ();   int len=0;   byte [] b=新的字节[1024];   在((len=is.read (b)) !=1) {   system . out。println(新字符串(b, 0, len));   }   is.close ();   }   公共空间doPost (HttpServletRequest请求,HttpServletResponse响应)   抛出ServletException IOException {   doGet(请求、响应);   }   }      

<强> 2,借助第三方的上传组件实现文件上传
  

  

,,,,1,fileupload概述
  

  

,,,,,,,,,类是由apache的共享组件提供的上传组件。它最主要的工作就是帮我们解析request.getInputStream ()
  

  

,,,,,,,,,导入commons-fileupload相关的jar包:
  

  

,,,,,,,,,,,,,,commons-fileupload。jar核心包
  

  

,,,,,,,,,,,,,,commons-io。jar依赖包
  

  

,,,,2,fileupload的核心类:
  

  

,,,,,,,,,DiskFileItemFactory、ServletFileUpload FileItem 

  

,,,一个,解析原理
  

  

,,,3,fileupload简单应用
  

  

,,,,使用fileupload组件的步骤如下:
  

  

,,,,,,,,,1,创建工厂类DiskFileItemFactory对象:,,,,,

        DiskFileItemFactory工厂=new DiskFileItemFactory ();      

,,,,,,,,,2、使用工厂创建解析器对象:,,,,,,,,,,

        ServletFileUpload fileUpload=new ServletFileUpload(工厂);      

,,,,,,,,,3、使用解析器来解析请求对象:,,,,,,,,,,
  

        List=fileUpload.parseRequest列表(请求)      

,,,,FileItem对象对应一个表单项(表单字段)。可以是文件字段或普通字段
  

  

,,,,,,,,,布尔isFormField():判断当前表单字段是否为普通文本字段,如果返回假,说明是文件字段
  

  

,,,,,,,,,字符串getFieldName():获取字段名称,例如:& lt;输入类型=拔谋尽眓ame="用户名"/比;返回的是用户名
  

  

,,,,,,,,,字符串getString():获取字段的内容,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件
  

  

,,,,,,,,,字符串getName():获取文件字段的文件名称(a.txt)
  

  

,,,,,,,,,字符串getContentType():获取上传的文件的MIME类型,例如:文本/平原
  

  

,,,,,,,,,int getSize():获取上传文件的大小
  

  

,,,,,,,,,InputStream getInputStream():获取上传文件对应的输入流
  

  

,,,,,,,,,空写(文件):把上传的文件保存到指定文件中
  

  

,,,,,,,,,delete ()

JavaWeb文件的上传和下载功能简单实现代码