一个用于上传文件的servlet

1、jsp页面操作文件:

 1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
 2 <html>
 3   <head>
 4     <title>上传文件 </title>
 5     <link rel="stylesheet" type="text/css" href="../css/uploadfile.css">
 6     <link rel="stylesheet" type="text/css" href="../css/footer.css">
 7     <script type="text/javascript" src="../js/uploadfile.js"></script>
 8   </head>
 9   <body>
10   <div class="container">
11   <form action="../upLoadFileServlet" name="uploadform" enctype="multipart/form-data" method="post">
12       <div class="back"><span class="cleckback" onclick="javascript:history.back()" style="padding-right: 50px;">返回上一级</span></div>
13       <div class="upfile-div" align="center">
14           <div class="title-div">上传文件</div>
15         <table class="toggle-table">
16            <tr>
17                <td>上传者姓名:</td>
18                <td><input type="text" id="uploadfileuser" name="uploadfileusername" class="inputname"/></td>
19            </tr>
20            <tr>
21                <td>上&nbsp;传&nbsp;时&nbsp;间:</td>
22                <td><input type="datetime-local" class="inputtime"></td>
23            </tr>
24            <tr>
25                <td>选择上传文件:</td>
26                <td><input type="file" name="uploadfile" class="seclectedfile"/></td>
27            </tr>
28            </table>
29            <div class="toggle-btns">
30                <input type="submit" value="上传" class="mybtn"/>
31                <input type="button" value="取消" class="mybtn" onclick="uploadUserCheck()"/>
32            </div>
33     </div>
34     </form>
35   </div>
36   <div class="footer"><jsp:include page="footer.jsp"></jsp:include></div>
37   </body>
38 </html>

2、uploadresult.jsp:

 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11
12     <title>My JSP ‘uploadresult.jsp‘ starting page</title>
13
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22
23   </head>
24
25   <body>
26   <p>121312313132123132</p>
27     <%
28         String msg = (String)request.getAttribute("upload.message");
29         if (msg != null)
30         {
31             %>
32                 <%= msg %>
33             <%
34         }
35      %>
36   </body>
37 </html>

3、servlet:

 1 package web.servlet;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.util.Iterator;
 6 import java.util.List;
 7
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 import org.apache.commons.fileupload.FileItem;
14 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
15 import org.apache.commons.fileupload.servlet.ServletFileUpload;
16
17 @SuppressWarnings("serial")
18 public class UpLoadFileServlet extends HttpServlet {
19
20     private int cachesize = 1024 * 1024;
21
22     public void doGet(HttpServletRequest request, HttpServletResponse response)
23             throws ServletException, IOException {
24
25         this.doPost(request, response);
26     }
27
28     public void doPost(HttpServletRequest request, HttpServletResponse response)
29             throws ServletException, IOException {
30
31         response.setCharacterEncoding("gb2312");
32         response.setContentType("text/html;charset=gb2312");
33         request.setCharacterEncoding("gb2312");
34         String uploadfileUserName = request.getParameter("uploadfileusername");
35
36 //        System.out.println(uploadfileUserName);
37
38         DiskFileItemFactory factory = new DiskFileItemFactory();
39         factory.setRepository(new File("e:/tmp/"));//设置文件缓存路径
40         factory.setSizeThreshold(cachesize);  //设置文件上传的上限,-1表示无上限
41         ServletFileUpload upload = new ServletFileUpload(factory);
42         if (!ServletFileUpload.isMultipartContent(request)){
43             return;
44         }
45         try {
46
47             @SuppressWarnings("unchecked")
48             List<FileItem> items = upload.parseRequest(request);//上传文件并解析出所有字段
49             Iterator<FileItem> iter = items.iterator();
50             while(iter.hasNext())
51             {
52                 FileItem item = iter.next();
53                 if (item.isFormField())  //表单字段
54                 {
55                     System.out.println(item.getFieldName());
56                     System.out.println(item.getString());
57                 }
58                 else
59                 {
60                     if (item.getName() != null && !item.equals(""))
61                     {
62                         System.out.println(item.getName());
63
64                         File tempFile = new File(item.getName());  //获得临时文件(创建内存文件)
65                         String filename = tempFile.getName();
66
67                         File file = new File(this.getServletContext().getRealPath("/")+"AcceptedUploadFiles",filename);
68 //                        OutputStream os = new FileOutputStream(file);
69                         item.write(file);
70                         request.setAttribute("upload.message", "成功上传文件:"+filename);
71                     }
72                     else
73                     {
74                         request.setAttribute("upload.message", "请选择上传文件");
75                     }
76
77                 }
78             }
79         } catch (Exception e) {
80             request.setAttribute("upload.message", "文件上传失败");
81         }
82         //dispatcher跳转其他资源
83         request.getRequestDispatcher("jsp/uploadresult.jsp").forward(request,response);
84     }
85
86 }
时间: 2024-10-11 06:20:02

一个用于上传文件的servlet的相关文章

使用ajaxfileupload.js异步上传文件到Servlet

前段时间帮同学做的毕业设计..好吧又是帮人做...需要上传文件,在这里使用了ajaxfileupload.js进行异步的上传文件到Servlet  ,后台保存了文件以后通过JSON返回文件路径到前端,好了废话不多说,直接上代码了... 前端页面比较简单 <input maxlength=16 type=file name="pic" id="pic" size=16 />  <input type="button" id=&qu

form、iframe实现异步上传文件

转载自:http://blog.csdn.net/sunjing21/article/details/4779321 实现主要功能: 页面提供一个上传图片的input file选择框,用于上传某一类型的数张图片 每次选择完本地图片后,图片便异步存储到后台的文件夹中: 并将路径信息存储到数据库中: 页面上显示此图的缩略图,并在旁边显示一个删除标记,当点击时,将此图片从页面.数据库.后台的文件夹中删除 input file选择框清空,再点击用于上传下一张图片: JSP页面编写如下: <div> &

servlet上传文件(四)

1.servlet上传文件 servlet上传文件就是将客户端的文件上传到服务器端. 向服务器发送数据时,客户端发送的http请求正文采用"multipart/form-data"数据类型,他表示复杂的多个子部分的复合表单. 为了简化"multipart/form-data"数据的处理过程.可以使用Apache组织提供是的两个开源包来来实现上传. fileupload软件包(commons-fileupload-1.2.1.jar),负责文件上传的软件包. io软件

Flex和Servlet结合上传文件

1.准备工作 (1)下载文件上传的组件,commons-fileupload-1.3.1.jar (2)下载文件输入输出jar,commons-io-2.4.jar (3)有关servlet的jar包,servlet-api.jar 2.正式开发 (1)新建一个web项目工程,FlexFileUpload (2)在src新建一个上传文件的servlet FlexFileUploadServlet.java: package com.you.upload.servlet; import java.

为什么上传文件的表单里面要加一个属性ENCTYPE=MULTIPART/FORM-DATA?

首先知道enctype这个属性管理的是表单的MIME编码.共有三个值可选:1.application/x-www-form-urlencoded2.multipart/form-data3.text/plain其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码.例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlen

netty4 实现一个断点上传大文件功能

我本来以为文件断点续传功能很简单,不就是提供2个方法: 一个返回已经上传的文件的长度:另外一个负责上传文件呗(请求带上content-range 指明本次上传的内容在整个文件中的位置),然后根据请求提供的位置写呗,太简单了. 但是实际情况还是比较复杂的,关键问题是,上面的描述现在想想只能称作为文件分段上传,而不是断点续传. 断点意味着网络会断,然后断了之后,服务端根本获取不到本次上传的内容,于是下次又只能从头开始传文件.一种解决办法是客户端将文件分成很小的片段(单个片段丢了就整个片段重传),这个

Dubbo服务 上传文件解决方案以及Hessian协议

? 协议支持 Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情.你可以根据你应用的创建来选择.例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议. dubbo服务不支持File文

Android中利用HTTP协议实现上传文件到服务器

首先我们需要使用HTTP协议发送数据,我们就要知道HTTP发送上传文件到服务器的时候需要哪些头字段已经相关的配置,请看下图 这是使用浏览器模拟上传文件到服务器时候所发送的请求,我们可以看到它包含了请求头字段和实体部分,但是多了一个---------------------------7da2137580612,它实际上是一条分隔线,用于分隔实体数据的,他在使用分隔实体数据的时候会在前面包含多两个"-"而在结束的时候会在除了在前面都出两个减号"-"之外,还会在末尾都出

? 为什么上传文件的表单里要加个属性enctype----摘录

上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype="application/x-www-form-urlencoded".这个属性管理的是表单的MIME编码,共有三个值可