Servlet之文件上传
上传表单中的注意事项:
表单 method 属性应该设置为 POST 方法,不能使用 GET 方法
表单 enctype 属性应该设置为multipart/form-data
下面的实例是借助于commons-fileupload和commons-io相关包来实现的
import java.io.*; import java.util.*; import javax.servlet.ServletConfig; 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.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.output.*; public class UploadServletextends HttpServlet { private boolean isMultipart; private String filePath; private int maxFileSize = 50 * 1024; private int maxMemSize = 4 * 1024; private File file ; public void init( ){ // 获取文件将被存储的位置 filePath = getServletContext().getInitParameter("file-upload"); } public void doPost(HttpServletRequestrequest, HttpServletResponse response) throws ServletException,java.io.IOException { // 检查我们有一个文件上传请求 isMultipart = ServletFileUpload.isMultipartContent(request); response.setContentType("text/html"); java.io.PrintWriter out =response.getWriter( ); if( !isMultipart ){ out.println("<html>"); out.println("<head>"); out.println("<title>Servletupload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>No fileuploaded</p>"); out.println("</body>"); out.println("</html>"); return; } DiskFileItemFactoryfactory = new DiskFileItemFactory(); //设置上传文件时用于临时存放文件的内存大小 factory.setSizeThreshold(maxMemSize); //设置存放临时文件的目录,这个目录需要事先建立好 factory.setRepository(new File("c:\\temp")); // 创建一个新的文件上传处理程序 ServletFileUploadupload = new ServletFileUpload(factory); // 允许上传的文件大小的最大值 upload.setSizeMax( maxFileSize ); try{ // 解析请求,获取文件项 List fileItems = upload.parseRequest(request); // 处理上传的文件项 Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Servletupload</title>"); out.println("</head>"); out.println("<body>"); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) //是文件域 { // 获取上传文件的参数 String fieldName = fi.getFieldName(); String fileName = fi.getName(); //文件的全路径 String contentType = fi.getContentType(); boolean isInMemory =fi.isInMemory(); long sizeInBytes = fi.getSize(); //得到去除路径的文件名 if(fileName.lastIndexOf("\\") >= 0 ){ //路径中包含“\”时 file = new File( filePath + fileName.substring( fileName.lastIndexOf("\\"))); }else{ //路径中不包含“\”时 file = new File( filePath + fileName.substring(fileName.lastIndexOf("\\")+1)) ; } fi.write( file ) ; // 写入文件 out.println("UploadedFilename: " + fileName + "<br>"); } } out.println("</body>"); out.println("</html>"); }catch(Exception ex) { System.out.println(ex); } } public void doGet(HttpServletRequestrequest, HttpServletResponseresponse) throws ServletException,java.io.IOException { throw new ServletException("GETmethod used with " + getClass( ).getName( )+":POST method required."); } }
Servlet之文件上传的更多相关文章
- Servlet实现文件上传
一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip : 点击打开链接 2) commons- ...
- Servlet实现文件上传,可多文件上传
一.Servlet实现文件上传,需要添加第三方提供的jar包 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="mul ...
- 配置servlet支持文件上传
Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件.为了使Servlet支付文件上传需 ...
- jsp+servlet实现文件上传下载
相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- java commons-fileupload servlet 多文件上传
commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...
- servlet web文件上传
web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...
- 通过JSP+servlet实现文件上传功能
在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制. 但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的. 通过为表单元素设置Method=&qu ...
- 使用FileUpload实现Servlet的文件上传
简介 FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下的文件上传功能. FileUpload链接 FileUpload 是基于Apache的Commons ...
- Servlet中文件上传下载
1.文件下载: package FileUploadAndDown; import java.io.FileInputStream; import java.io.IOException; impor ...
随机推荐
- bzoj 5286: [Hnoi2018]转盘
Description Solution 首先注意到一个点不会走两次,只会有停下来等待的情况,把序列倍长 那么如果枚举一个起点\(i\),答案就是 \(min(max(T[j]+n-(j-i)-1)) ...
- UOJ #236. 【IOI2016】railroad
Description Anna 在一个游乐园工作.她负责建造一个新的过山车铁路.她已经设计了影响过山车速度的 nn 个特殊的路段(方便起见标记为 00 到 n−1n−1).现在 Anna 必须要把这 ...
- xx学院学员评优评奖管理系统
[勤拂拭软件,软件开发,毕业设计,程序作业,论文写作指导:q-[1215714557] 加好友请注明:勤拂拭)] 之前帮助一个军校学生做的一个评优评奖管理系统,该系统主要用于学校学生评优评先使用. ...
- xml 和数组的相互转化
数组转化为xml: function arrtoxml($arr,$dom=0,$item=0){ if (!$dom){ $dom = new DOMDocument("1.0" ...
- sqlserver 取日期年份月份
select convert(varchar(10),datepart(YYYY,a.fssj)) as years,--得到年份convert(varchar(10),datepart(mm,a.f ...
- webstorm 设置uglify 压缩js文件
第一步:打开npm,全局安装 npm install uglify-js -g 第二步: 打开webstorm的file->settings ->External Tools,点击左上角的 ...
- CMD远程连接服务器上的MySQL
1.打开CMD命令行. 2.输入mysql -h要远程的IP地址 -u设置的MySQL用户名 -p登录用户密码 例如:mysql -h192.168.0.110 -uroot -p1233 (如果不能 ...
- SQL语句常见DDL/DML/DCL操作部分试题(一)
创建三个空表emp1,emp2,emp3,结构参考emp表 CREATE TABLE EMP1 AS SELECT * FROM EMP WHERE 1=2; CREATE TABLE EMP2 AS ...
- 推荐几种PHP实现页面跳转的方法
1.PHP实现页面跳转第一种方法 <?php header("Location:http://www.baidu.com"); ?> header()是php内置函数, ...
- Node.js Smalloc
稳定性: 1 - 试验 类: smalloc 由简单内存分配器(处理扩展原始内存的分配)支持的缓存.Smalloc 有以下函数: smalloc.alloc(length[, receiver][, ...