Java jsp servlet 实现文件上传 最简单操作

|--实现文件上传的方式

1、进入http://commons.apache.org/proper/commons-fileupload/using.html

2、点击用户指南

3、对着用户指南一步步复制粘贴,并把代码撸成自己想要的样子

补充:记得要将commons-io-2.4.jar和commons-fileupload-1.2.2.jar这两个包放到编译器里面

|--现成的代码

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: Administrator
 4   Date: 2019/10/8
 5   Time: 16:14
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>作业三第1遍</title>
12 </head>
13 <body>
14 文件上传注意事项:<br>
15 <ol>
16     <li>提交方式必须是post</li>
17     <li>enctype="multipart/form-data"是以字节数据的形式提交表单,否则默认是kv形式,只会提交文件名</li>
18     <li>如果以默认的application/x-www-form-urlencode的方式提交,上传的就不是文件本身</li>
19 </ol>
20 <%--application/x-www-form-urlencoded 以键值对的方式上传 --%>
21 <%-- multipart/form-data 以二进制的方式上传 --%>
22 <form action="/work/UploadServlet" method="post" enctype="multipart/form-data">
23     <input type="text" name="data1" value="data1Value">
24     <hr>
25     <input type="text" name="data2" value="data2Value">
26     <hr>
27     <input type="file" name="dataFile">
28     <hr>
29     <input type="submit" value="上传该表单">
30     <hr>
31 </form>
32
33
34 </body>
35 </html>

JSP 前端页面

  1 package com.bd25;
  2
  3 import org.apache.commons.fileupload.FileItem;
  4 import org.apache.commons.fileupload.FileItemFactory;
  5 import org.apache.commons.fileupload.FileUploadException;
  6 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  7 import org.apache.commons.fileupload.servlet.ServletFileUpload;
  8
  9 import javax.servlet.ServletException;
 10 import javax.servlet.ServletInputStream;
 11 import javax.servlet.annotation.WebServlet;
 12 import javax.servlet.http.HttpServlet;
 13 import javax.servlet.http.HttpServletRequest;
 14 import javax.servlet.http.HttpServletResponse;
 15 import java.io.File;
 16 import java.io.IOException;
 17 import java.io.UnsupportedEncodingException;
 18 import java.util.Enumeration;
 19 import java.util.Iterator;
 20 import java.util.List;
 21
 22 @WebServlet(name = "UploadServlet", urlPatterns = "/UploadServlet")
 23 public class UploadServlet extends HttpServlet {
 24     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 25         //处理中文乱码--已经测试这个要不要无所谓
 26         request.setCharacterEncoding("UTF-8");
 27
 28         //判断是不是传入的一个二进制的流
 29         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
 30         //创建一个简单工厂实例
 31         FileItemFactory factory = new DiskFileItemFactory();
 32         //创建一个新的文件上传处理程序
 33         ServletFileUpload upload = new ServletFileUpload(factory);
 34         //解析request
 35         try {
 36             List<FileItem> fileItems = upload.parseRequest(request);
 37             //处理上传的项目
 38             Iterator iter=fileItems.iterator();
 39             while(iter.hasNext()){
 40                 FileItem item = (FileItem) iter.next();
 41                 if (item.isFormField()){
 42                    //普通域
 43                     processFormField(item);
 44                 }else{
 45                    //文件域  此处注意processUploadFile()方法的参数里面传入request的目的是让下面写文件的时候获取根目录用的
 46                     processUploadFile(item,request);
 47                 }
 48
 49             }
 50
 51         } catch (FileUploadException e) {
 52             e.printStackTrace();
 53         }
 54
 55
 56         ServletInputStream inputStream = request.getInputStream();
 57         byte[] bs=new byte[1024];
 58         int total=-1;
 59         while ((total=inputStream.read(bs))!=-1){
 60             System.out.print(new String(bs,0,total));
 61         }
 62     }
 63
 64     /**
 65      * 文件域
 66      * @param item
 67      * @param request
 68      */
 69     private void processUploadFile(FileItem item, HttpServletRequest request) {
 70         //获取文件相关信息
 71         String fileName="";
 72         if (!item.isFormField()) {
 73             String fieldName = item.getFieldName();
 74             fileName = item.getName();
 75             String contentType = item.getContentType();
 76             boolean isInMemory = item.isInMemory();
 77             long sizeInBytes = item.getSize();
 78             System.out.println("文件名: "+fileName+" 文件属性:"+fieldName+" 文件大小:"+sizeInBytes+" 文件类型:"+contentType);
 79         }
 80         //以下是转存操作,找到储存文件的根路径
 81         String fileRootPath=request.getServletContext().getRealPath("/WEB-INF/upload");
 82         File dir = new File(fileRootPath);
 83         if (!dir.exists()){
 84             dir.mkdirs();
 85         }
 86         //写文件
 87         File file = new File(fileRootPath+"/"+fileName);
 88         try {
 89             item.write(file);
 90         } catch (Exception e) {
 91             e.printStackTrace();
 92         }
 93     }
 94
 95     /**
 96      * 普通域
 97      * @param item
 98      */
 99     private void processFormField(FileItem item) {
100         String key = item.getFieldName();
101         String value = null;
102         try {
103             //处理中文乱码
104             value = item.getString("UTF-8");
105         } catch (UnsupportedEncodingException e) {
106             e.printStackTrace();
107         }
108         System.out.println(key+"----"+value);
109     }
110
111     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
112
113     }
114
115     @Override
116     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
117         super.service(req, resp);
118         System.out.println("刷新....");
119     }
120
121     @Override
122     public void init() throws ServletException {
123         super.init();
124         System.out.println("初始化....");
125     }
126 }

Servlet 后台处理页面

|--运行结果

//说明:路径出现的位置就是网页发布的路径

//说明:路径出现的位置就是网页发布的路径

原文地址:https://www.cnblogs.com/twuxian/p/11637956.html

时间: 2024-08-10 10:52:33

Java jsp servlet 实现文件上传 最简单操作的相关文章

jsp+servlet实现文件上传

上传(上传不能使用BaseServlet) 1. 上传对表单限制 * method="post" * enctype="multipart/form-data" * 表单中需要添加文件表单项:<input type="file" name="xxx" /> <form action="xxx" method="post" enctype="multipart/

通过JSP+servlet实现文件上传功能

在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制. 但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的. 通过为表单元素设置Method="post" enctype="multipart/form-data" 属性,让表单提交的数据以二进制编码的方式提交,在接受此请求的servlet中的二进制流来获取内容,就可以取得上传文件的内容,从而实现文件的上传. 代码分两部分 part1:前台页面index.jsp &

java jsp Struts2.X 文件上传

/** * *操作系统:WIN-XP *后台程序:Java *前端脚本:JavaScript/ExtJs/Html * *做过的尝试:用form的submit方式提交,在后台request.getInputStream()取到的值*为null,而*request.getContentLength()是可以正常取值的.用request.getRead()抛出错误,request has been *called 网查之后得知,似乎是Struts过滤掉了.另寻他法于是便有了下面代码. */ @Par

Servlet多文件上传

各位大侠可能会对263电子邮箱中的"上传附件"功能有印象,就是:在浏览 器中点击"浏览",弹出一个对话框,选中文件后,单击"确定",文件就被上传到了服务器端. 因为需要,就到网上找了几个控件,如SmartUpload等,但都觉得不好用,或者 说是不合用,决定自己做一个.近日看到网上也有人提问怎么上载文件,于是把编制过程整理一遍,希望对大家有所帮助,不足之处,请多多指教. 准备 侦听工具,如SpyNet(包括CaptureNetPeepNet),目

Servlet实现文件上传,可多文件上传

一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons-io-2.3-bin.zip                       :    点击打开链接 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 applicatio

Servlet实现文件上传

一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons-io-2.3-bin.zip                       :    点击打开链接 二.文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded

JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等

原文:JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等 源代码下载地址:http://www.zuidaima.com/share/1550463319542784.htm JQuery和Servlet实现文件上传进度条,能显示上传速度,上传的百分比等

ASP.NET 中对大文件上传的简单处理

ASP.NET 中对大文件上传的简单处理 在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示.笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ASP.NET 中的大文件上传问题. 首先,我们需要下载这个名为 RanUpLoad 的组件,可以去我的百度云盘下载: http://pan.baidu.com

ASP.NET 大文件上传的简单处理

在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示.在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ASP.NET 中的大文件上传问题. 首先,我们需要这个名为 RanUpLoad 的组件(下面例子中附带),这两个 dll 文件添加到项目的引用中区,xml 文件也要复制在项目中的 bin 文件夹下,也就是