JavaWeb实现本地文件上传功能的方法

  介绍

这篇文章主要介绍了JavaWeb实现本地文件上传功能的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

这篇文章主要介绍了JavaWeb如何实现本地文件上传功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Web中的文件上传主要是分为两步

在Web页面中设置一个上传文件的选项,一般是通过& lt; form> & lt; input>两个标签实现

在Servlet类中读取到上传的文件,并保存到服务器中

记录实现步骤前先撸一遍需要注意的几个地方,以及两个jar包和类的介绍

需要注意的地方

& lt; input>输入项的类型属性设置为& # 39;文件# 39;,并且必须要设置的名字属性,否则浏览器将不会发送上传文件的数据

& lt; form>表单的方法属性必须设置为& # 39;文章# 39;方式,enctype属性设置为“多部分/格式# 39;

要用到的jar包和类的介绍

为了解决用户一次性上传多个文件的需求,Apache提供了一个组件FileUploat,这个文件实现了多个文件同时上传而且可以限制上传文件的大小,使用这个组件需要去Apache官网下载两个jar包:commons-fileupload-1.4.jar、commons - io - 2.6。jar
要用到FileUpload组件中的FileItem接口,DiskFileItemFactory类和ServletFileUpload类(这些类里的方法就不写了,在项目里直接用了)

用一张图就可以很清楚的表示出这几个类的作用了

 JavaWeb实现本地文件上传功能的方法

下面就是实现步骤了

第一步:导入上面提到的要用到的两个jar包

第二步:创建上传页面

& lt; %), Created  by  IntelliJ 想法只——%比;   & lt; % @  page  contentType=皌ext/html; charset=UTF-8",语言=癹ava", %比;   & lt; html>   & lt; head>   & lt;才能title> & lt;/title>      & lt;/head>   & lt; body>      & lt; form  enctype=岸嗖糠?form-data",方法=皃ost", action=癱n.itcast.fileupload.UploadServlet"比;      %,& lt;才能上传者——%比;   & lt;才能input 类型=皌ext", name=皀ame"比;   %,& lt;才能上传文件——%比;   & lt;才能input 类型=癴ile", name=癿yfile"比;   & lt;才能input 类型=皊ubmit",价值=https://www.yisu.com/zixun/鄙洗?>   

第三步:创建一个Servlet类,对上传的文件进行处理

package  cn.itcast.fileupload;      import  org.apache.commons.fileupload.FileItem;   import  org.apache.commons.fileupload.FileUploadException;   import  org.apache.commons.fileupload.disk.DiskFileItemFactory;   import  org.apache.commons.fileupload.servlet.ServletFileUpload;      import  javax.servlet.ServletException;   import  javax.servlet.http.HttpServlet;   import  javax.servlet.http.HttpServletRequest;   import  javax.servlet.http.HttpServletResponse;   import  . io . *;   import 并不知道;   import  java.util.UUID;      public  class  UploadServlet  extends  HttpServlet  {      private 才能static  final  long  serialVersionUID =, 1 l;      @Override才能   protected 才能;void  doGet (HttpServletRequest 点播,HttpServletResponse 职责),throws  ServletException, IOException  {      ,,,try  {//,,,,,,设置ContentType字段   ,,,,,resp.setContentType (“text/html; charset=utf8");//,,,,,创建DiskFileItemFactory工厂对象,可以将请求消息实体中的每一个文件封装成单独的FielItem对象   ,,,,,DiskFileItemFactory  factory =, new  DiskFileItemFactory ();//,,,,,设置文件缓存目录,如果该文件不存在则新创建一个   ,,,,,File  f =, new 文件(“/用户/地溜溜转/桌面/my");   ,,,,,if  (! f.exists ()), {   ,,,,,,,f.mkdir ();   ,,,,,}//,,,,,,设置文件的缓存路径   ,,,,,factory.setRepository (f);//,,,,,,创建一个ServletFileUpload对象   ,,,,,ServletFileUpload  fileUpload =, new  ServletFileUpload(工厂);//,,,,,,设置字符编码   ,,,,,fileUpload.setHeaderEncoding (“utf-8");//,,,,,,解析请求,得到上传文件的FileItem对象   ,,,,,List, fileItems =, fileUpload.parseRequest(要求的);//,,,,,,获取字符流   ,,,,,PrintWriter  writer =, resp.getWriter ();//,,,,,,遍历对象fileItems对象的列表集合   ,,,,,for  (FileItem  FileItem : fileItems), {//,,,,,,,,判断当前的FileItem对象封装的数据是“普通文本表单字段“   ,,,,,,,if  (fileItem.isFormField ()), {//,,,,,,,,,,获得上传的表单字段的名字属性值   ,,,,,,,,,String  name =, fileItem.getFieldName ();   ,,,,,,,,,if  (name.equals (“name")), {//,,,,,,,,,,,,如果FileItem对象中保存的数据流不为空,则返回一个字符串,并通过打印输出   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

JavaWeb实现本地文件上传功能的方法