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. 浅谈DevExpress<一>:换肤

    最近要用到devExpress,一句话,很好很强大,比起vs自带的winform界面,种类和花样要多了不少,然而,强力的功能带来了庞大的信息量,所以我打算通过一些小模块来和大家一起对它进行探讨和研究. ...

  2. c#winform关闭窗口时触发的事件

    用户关闭软件时,软件一般会给“是否确认关闭”的提示. 通常,我们把它写在FormClosing 事件中,如果确定关闭,就关闭:否则把FormClosingEventArgs 的 Cancel 属性设置 ...

  3. discuz的门户文章页中增加百度分享代码

    discuz虽然有百度分享插件,但是不太想用,于是自己手动添加了百度分享代码: 一.在http://share.baidu.com/地址中申请设置自己的百度分享代码,选择的风格完全按照个人喜好进行选择 ...

  4. logstash+elasticsearch+kibana快速搭建日志平台

    使用logstash+elasticsearch+kibana快速搭建日志平台   日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...

  5. linux 安装svn,并设置钩子来同步更新

    linux安装svn下载 http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz 和 http://subversion.tigr ...

  6. NuGet的本地服务器安装与Package的发布

    NuGet的本地服务器安装与Package的发布 主要的步骤是按照下面的例子来做的: NuGet学习笔记(1)——初识NuGet及快速安装使用 NuGet学习笔记(2)——使用图形化界面打包自己的类库 ...

  7. Cookie 操作工具类

    import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet ...

  8. linux下面配置安装nodejs+npm

    linux下 多亏这一篇文章= =我就卡死在文章所说的这个点里 附大牛链接:http://blog.sitearth.com/nodejs%E4%B8%8A%E4%BD%BF%E7%94%A8mong ...

  9. avalon - 初步接触

    avalon - 初步接触 avalon的介绍http://rubylouvre.github.io/mvvm/ 按照作者的介绍,在HTML中添加绑定,在JS中用avalon.define定义View ...

  10. 【C++自我精讲】基础系列四 static

    [C++自我精讲]基础系列四 static 0 前言 变量的存储类型:存储类型按变量的生存期划分,分动态存储方式和静态存储方式. 1)动态存储方式的变量,生存期为变量所在的作用域.即程序运行到此变量时 ...