1、jsp页面操作文件:

 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>上传文件 </title>
<link rel="stylesheet" type="text/css" href="../css/uploadfile.css">
<link rel="stylesheet" type="text/css" href="../css/footer.css">
<script type="text/javascript" src="../js/uploadfile.js"></script>
</head>
<body>
<div class="container">
<form action="../upLoadFileServlet" name="uploadform" enctype="multipart/form-data" method="post">
<div class="back"><span class="cleckback" onclick="javascript:history.back()" style="padding-right: 50px;">返回上一级</span></div>
<div class="upfile-div" align="center">
<div class="title-div">上传文件</div>
<table class="toggle-table">
<tr>
<td>上传者姓名:</td>
<td><input type="text" id="uploadfileuser" name="uploadfileusername" class="inputname"/></td>
</tr>
<tr>
<td>上&nbsp;传&nbsp;时&nbsp;间:</td>
<td><input type="datetime-local" class="inputtime"></td>
</tr>
<tr>
<td>选择上传文件:</td>
<td><input type="file" name="uploadfile" class="seclectedfile"/></td>
</tr>
</table>
<div class="toggle-btns">
<input type="submit" value="上传" class="mybtn"/>
<input type="button" value="取消" class="mybtn" onclick="uploadUserCheck()"/>
</div>
</div>
</form>
</div>
<div class="footer"><jsp:include page="footer.jsp"></jsp:include></div>
</body>
</html>

2、uploadresult.jsp:

 <%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'uploadresult.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<p>121312313132123132</p>
<%
String msg = (String)request.getAttribute("upload.message");
if (msg != null)
{
%>
<%= msg %>
<%
}
%>
</body>
</html>

3、servlet:

 package web.servlet;

 import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; @SuppressWarnings("serial")
public class UpLoadFileServlet extends HttpServlet { private int cachesize = 1024 * 1024; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
String uploadfileUserName = request.getParameter("uploadfileusername"); // System.out.println(uploadfileUserName); DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File("e:/tmp/"));//设置文件缓存路径
factory.setSizeThreshold(cachesize); //设置文件上传的上限,-1表示无上限
ServletFileUpload upload = new ServletFileUpload(factory);
if (!ServletFileUpload.isMultipartContent(request)){
return;
}
try { @SuppressWarnings("unchecked")
List<FileItem> items = upload.parseRequest(request);//上传文件并解析出所有字段
Iterator<FileItem> iter = items.iterator();
while(iter.hasNext())
{
FileItem item = iter.next();
if (item.isFormField()) //表单字段
{
System.out.println(item.getFieldName());
System.out.println(item.getString());
}
else
{
if (item.getName() != null && !item.equals(""))
{
System.out.println(item.getName()); File tempFile = new File(item.getName()); //获得临时文件(创建内存文件)
String filename = tempFile.getName(); File file = new File(this.getServletContext().getRealPath("/")+"AcceptedUploadFiles",filename);
// OutputStream os = new FileOutputStream(file);
item.write(file);
request.setAttribute("upload.message", "成功上传文件:"+filename);
}
else
{
request.setAttribute("upload.message", "请选择上传文件");
} }
}
} catch (Exception e) {
request.setAttribute("upload.message", "文件上传失败");
}
//dispatcher跳转其他资源
request.getRequestDispatcher("jsp/uploadresult.jsp").forward(request,response);
} }

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

  1. .net 模拟发起HTTP请求(用于上传文件)

    用C#在服务端发起http请求,附上代码一 /// <summary> /// 文件帮助类 /// </summary> public class FileHelper { / ...

  2. 安装lszrz,用于上传文件

    wget http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gztar zxvf lrzsz-0.12.20.tar.gzcd lrzsz- ...

  3. form、iframe实现异步上传文件

    转载自:http://blog.csdn.net/sunjing21/article/details/4779321 实现主要功能: 页面提供一个上传图片的input file选择框,用于上传某一类型 ...

  4. Springboot上传文件临时目录无效

    一个奇葩问题,虽然解决了,但还是没弄清楚,小记一笔. 年后回来,测试人员对年前的3次迭代的功能进行了回归测试,然后发现所有excel导入的功能都失效了.作为后台开发人员,当然是第一时间打开运行日志排查 ...

  5. Flex和Servlet结合上传文件

    Flex和Servlet结合上传文件 1.准备工作 (1)下载文件上传的组件,commons-fileupload-1.3.1.jar (2)下载文件输入输出jar,commons-io-2.4.ja ...

  6. 为什么上传文件的表单里面要加一个属性enctype=multipart/form-data?

    首先知道enctype这个属性管理的是表单的MIME编码.共有三个值可选:1.application/x-www-form-urlencoded2.multipart/form-data3.text/ ...

  7. ajaxfileupload原理及用法,主要用于即想用ajax序列化传递参数,又必须上传文件

    一,原理 AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值. 当初做了个异步上传的功能,选择它因 ...

  8. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

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

    ​ 协议支持 Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 在通 ...

随机推荐

  1. ODP.NET

    1,什么是ODT?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数据访问 A ...

  2. E-mail Composition and Decoding

    一.邮件涉及协议及本文说明1. 协议 SMTP(Simple Mail Transfer Protocal) 简单邮件传输协议,用于发送邮件. MIME(Mutipurpose Internet Ma ...

  3. 目标指向、Icon图标的错误

    VS打包后生成快捷方式:目标指向.Icon图标的错误 1.目标指向错误: 在安装***.msi文件后,对快捷方式-->右键-->属性: 发现目标并非指exe文件. 于是我新建了一个快捷方式 ...

  4. WP8开发札记(二)让程序支持锁屏运行

    我们都知道WP8是采用墓碑机制来管理应用程序的. 当我们把手机锁屏了,默认情况下,App就触发了deactivated 事件,准备被墓碑化了. 但是,有些时间我们不想让程序就此终止运行.(比如说,你开 ...

  5. .net分页控件简单实现

    .net分页控件简单实现 好久好久没写博客了.....最近写了一个.net的分页控件,放到园子里...你觉得好,就点个赞,不好呢,就告诉我为啥吧.... 是使用Request.QueryString的 ...

  6. wget ( download the whole page from the website )

    ---恢复内容开始--- wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1 ...

  7. 熬之滴水成石:Spring--精简的J2EE(7)

                                              49--持久性 关于持久性在最早的Delphi单元中,就曾介绍过.持久性是数据库中读取,保存,或删除数据的过程.毫无 ...

  8. 直插式精巧I/O模块:WIZ812MJ数据手册V1.1

    1. 简介 WIZ812MJ是一款内嵌了W5100(硬件TCP/IP芯片,内置PHY).带其他胶合逻辑的MAG-JACK(带变压器的RJ45)网络模块.它可以当作一个组件使用,而且不需要为W5100和 ...

  9. Debian下的'aptitude update'失败处理

    Hit http://ftp.us.debian.org squeeze/contrib amd64 Packages Hit http://download.proxmox.com squeeze/ ...

  10. 写一些脚本的心得总结系列第4篇-------从数据库同步到redis

    5.从数据库同步到redis的. redis把数据放内存里,读取都非常方便,也提供了远超memcache的丰富数据结构.下面我举2个例子,比如1)把数据从数据库写入到redis: <?php $ ...