- 浏览: 7420 次
- 性别:
- 来自: 上海
文章分类
最新评论
1. jsp上传
Notice:
1. form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法
2. form表单 enctype 属性需要设置为 multipart/form-data
3. form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址或者servlet地址。例如 uploadFile.jsp 程序文件用来处理上传的文件
4. 上传文件元素需要使用 <input .../> 标签,属性设置为 type="file"。如果需要上传多个文件,可以在 <input .../>标签中设置不同的名称
Steps
首先我们先定义文件上传后存储在服务上的位置,你可以将路径写在你的程序当中,或者我们可以在web.xml配置文件中通过设置 context-param 元素来设置文件存储的目录
依赖 FileUpload, 所以你需要在你的classpath中引入最新的 commons-fileupload.x.x.jar 包文件
FileUpload 依赖 Commons IO, 所以你需要在你的classpath中引入最新的 commons-io-x.x.jar
在测试以下实例时,你需要上传确认上传的文件大小小于 maxFileSize 变量设置的大小 ,否则文件无法上传成功
确保你已经创建了目录F:\files_uploaded
fileupload.jsp
processFileUpload.jsp
NOTE:
代码copy自网络,起初,processFileUpload.jsp中的List items = servlet.parseRequest(request);得到的总是空集合,网上也有很多遇到这种情况的,原因 在fileupload.jsp: name="fileSelected" , 如果没有name标记,commons fielupload不会作处理
servlet.setHeaderEncoding("UTF-8");中文名不会乱码
2. servlet上传
fileupload.jsp
upload_result.jsp
web.xml
Notice:
1. form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法
2. form表单 enctype 属性需要设置为 multipart/form-data
3. form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址或者servlet地址。例如 uploadFile.jsp 程序文件用来处理上传的文件
4. 上传文件元素需要使用 <input .../> 标签,属性设置为 type="file"。如果需要上传多个文件,可以在 <input .../>标签中设置不同的名称
Steps
首先我们先定义文件上传后存储在服务上的位置,你可以将路径写在你的程序当中,或者我们可以在web.xml配置文件中通过设置 context-param 元素来设置文件存储的目录
<context-param> <param-name>file_upload_dir</param-name> <param-value>F:\files_uploaded</param-value> <description>Location to store uploaded files</description> </context-param>
依赖 FileUpload, 所以你需要在你的classpath中引入最新的 commons-fileupload.x.x.jar 包文件
FileUpload 依赖 Commons IO, 所以你需要在你的classpath中引入最新的 commons-io-x.x.jar
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>
在测试以下实例时,你需要上传确认上传的文件大小小于 maxFileSize 变量设置的大小 ,否则文件无法上传成功
确保你已经创建了目录F:\files_uploaded
fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Up load file</title> </head> <body> <form action="processFileUpload.jsp" method="post" enctype="multipart/form-data"> <input type="file" size="50" name="fileSelected"> <input type="submit" value="upload"> </form> </body> </html>
processFileUpload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page import="java.io.*,java.util.*,javax.servlet.*" %> <%@ page import="org.apache.commons.fileupload.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% File file; int maxSize = 1024*1024*1024; int maxMemSize = 1024*1024; ServletContext ctx = pageContext.getServletContext(); String filePath = ctx.getInitParameter("file_upload_dir"); String contentType = request.getContentType(); if(ServletFileUpload.isMultipartContent(request)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(maxMemSize); //设置内存中存储文件的最大值 factory.setRepository(new File("F:\\tmp")); ServletFileUpload servlet = new ServletFileUpload(factory); servlet.setSizeMax(maxSize); //设置最大的上传文件大小 try { List items = servlet.parseRequest(request); out.println(items.size()); Iterator it = items.iterator(); while(it.hasNext()) { FileItem item = (FileItem) it.next(); String fieldName = item.getFieldName(); String fileName = item.getName(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); if(fileName.lastIndexOf("\\") >= 0) { file = new File(filePath, fileName.substring(fileName.lastIndexOf("\\"))); } else { file = new File(filePath, fileName.substring(fileName.lastIndexOf("\\")+1)); } item.write(file); out.println("Uploaded file: " + fileName); } } catch (Exception e) { e.printStackTrace(); } } %> </body> </html>
NOTE:
代码copy自网络,起初,processFileUpload.jsp中的List items = servlet.parseRequest(request);得到的总是空集合,网上也有很多遇到这种情况的,原因 在fileupload.jsp: name="fileSelected" , 如果没有name标记,commons fielupload不会作处理
servlet.setHeaderEncoding("UTF-8");中文名不会乱码
2. servlet上传
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import javax.servlet.ServletContext; 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; public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 849325874174997377L; private static final int sizeThreshold = 1024*1024*1024; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(".....doGet....."); super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletContext ctx = this.getServletContext(); String filePath = ctx.getInitParameter("file_upload_dir"); factory.setRepository(new File(filePath)); factory.setSizeThreshold(sizeThreshold); ServletFileUpload upload = new ServletFileUpload(factory); try { @SuppressWarnings("unchecked") List<FileItem> list = upload.parseRequest(req); for(FileItem item : list) { String name = item.getFieldName(); if(item.isFormField()) { // String value = item.getString(); // req.setAttribute(name, value); } else { String value = item.getName(); String fileName = value.substring(value.indexOf("\\")+1); req.setAttribute(name, fileName); OutputStream os = new FileOutputStream(new File(filePath, fileName)); InputStream is = item.getInputStream(); byte[] buff = new byte[1024]; System.out.println("The length of " + value + " is " + item.getSize()); int length = 0; while((length = is.read(buff)) != -1) { os.write(buff, 0, length); } is.close(); os.close(); } } } catch (FileUploadException e) { e.printStackTrace(); } req.getRequestDispatcher("pages/upload_result.jsp").forward(req, resp); } }
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init EncodingFilter...."); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("utf-8"); System.out.println("set the encoding to be utf-8 in EncodingFilter..."); chain.doFilter(request, response); } @Override public void destroy() { System.out.println("destroy EncodingFilter...."); } }
fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Up load file</title> </head> <body> <form action="<%=request.getContextPath() %>/fileupload" method="post" enctype="multipart/form-data"> <input type="file" size="50" name="fileSelected"> <input type="submit" value="upload"> </form> </body> </html>
upload_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h3>File <%=request.getAttribute("fileSelected") %> uploaded successfully.</h3> </body> </html>
web.xml
<web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>file_upload_dir</param-name> <param-value>F:\files_uploaded</param-value> <description>Location to store uploaded files</description> </context-param> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.jesse.jsp.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>fileUploadServlet</servlet-name> <servlet-class>com.jesse.jsp.servlet.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>fileUploadServlet</servlet-name> <url-pattern>/fileupload</url-pattern> </servlet-mapping> </web-app>
发表评论
-
jsp通过session记录访问次数
2015-04-19 18:50 0<html> <head> & ... -
cookie实现记住密码
2015-04-19 08:51 0login.jsp <body> &l ... -
filter
2015-04-19 08:23 0常用的过滤器类型: 认证过滤器 数据压缩过滤 ... -
jsp请求处理
2015-04-19 07:52 0login.jsp <body> < ... -
jsp页面显示后台错误
2015-04-19 07:34 908web.xml <web-app> < ... -
JSP简单访问数据库
2015-04-19 06:36 765学习使用javaBean,代码很烂,仅为留个脚印 pub ... -
jsp
2015-04-19 03:45 706JSP初始化 容器载入JSP文件后,它会在为请求提供任 ...
相关推荐
JSP上传文件(有进度条)可上传大文件 网上有很多文章都是jspsmart,由于jspsmart直接在内存中操作数据,如果上传大文件或多台计算机上传的话会出错,还有一些方法传得比较慢。 为了方便上传文件,本人写了一个传输...
jsp上传文件样例jsp上传文件样例jsp上传文件样例jsp上传文件样例jsp上传文件样例
jsp上传文件教程 jsp上传文件教程
使用jsp上传文件到服务器的具体方法,运用的是smartupload组件,里面已经带了jar包
jsp通过commons-fileupload.jar 上传文件显示上传进度
jspSmartUpload智能动态上传
jsp java文件上传(源码项目),做到了无刷新,显示上传进度(包含有进度条)上传速度,以上传大小,剩于大小,以上传时间,上传所需时间,还剩多长时间,功能非常完美,等等,
完整好用的jsp 上传文件源码实例,完整好用的jsp 上传文件源码实例,完整好用的jsp 上传文件源码实例。非常好用哦。
jsp上传文件模块代码,测试成功的,同学录相片上传可直接应用
jsp上传文件必备组件,经本人测试完全可以使用
总之很不错啦,jsp上传文件的一些参考jsp上传文件的一些参考jsp上传文件的一些参考
JSP上传文件和JB一起使用 JSP上传文件和JB一起使用 JSP上传文件和JB一起使用
jsp+servlet文件上传所需jar包
不使用第三方库,快速JSP上传文件,供大家一起共同分享学习。
有关jsp中文件的上传(完整版)有关jsp中文件的上传(完整版)
该程序是用jsp实现的上传文件功能!!!
在网上搜索的JSP文件上传,并经过本人...在我的项目中比较好用. 采用FORM上传文件,生成的内容如包中的bbb文件所示. 修改过后,上传的文件不再包含上传标志信息,希望接合bbb文件和上传java文件,能给大家更多帮助.
NULL 博文链接:https://yuanyuan7891.iteye.com/blog/711312
完整的讲述了基于jsp的文件上传下载功能,具体讲解见http://blog.csdn.net/it_tingge/article/details/49025273