常用的上传组件:
Apache 的 Commons FileUpload
jspSmartUpload
JavaZoom的UploadBean
jspSmartUpload 简单易用,但是它好像不是开源的,也不怎么更新了,它上传要把文件放入内存,不适合传大文件,
推荐使用commons-fileupload
开源组件,有更新,可以上传大文件。Struts也是采用它处理上传。
commons-fileupload下载地址:
http://commons.apache.org/fileupload/
下载:commons-fileupload-1.3-bin.zip 得到:commons-fileupload-1.3.jar
http://commons.apache.org/io/
下载:commons-io-2.2-bin.zip 得到:commons-io-2.2.jar
uploadFile.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>using commons Upload to upload file</title>
</head>
<style>
* {
font-family: "宋体";
font-size: 14px
}
</style>
<body>
<p align="center">请您选择需要上传的文件</p>
<form id="form1" name="form1" method="post"
action="servlet/fileServlet" enctype="multipart/form-data">
<table border="0" align="center">
<tr>
<td>上传人:</td>
<td><input name="name" type="text" id="name" size="20"></td>
</tr>
<tr>
<td>上传文件:</td>
<td><input name="file" type="file" size="20"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
FileUploadServlet.java
package com.urt.module.upload;
import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletConfig;
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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 上传Servlet
* @author happyqing
* 2013.10.29
*/
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = -7744625344830285257L;
private static final Log log = LogFactory.getLog(FileUploadServlet.class);
private ServletContext servletContext ;
private String savePath;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//doPost(request, response);
}
public void init(ServletConfig config) {
// 在web.xml中设置的一个初始化参数
savePath = config.getInitParameter("savePath");
servletContext = config.getServletContext();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setSizeMax(1024*1024);
try {
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
System.out.println("表单参数名:" + item.getFieldName()
+ ",表单参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !"".equals(item.getName())) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
// 上传文件的保存路径 //运行目录下
File file = new File(servletContext.getRealPath("/") + savePath,
tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上传文件成功!");
} else {
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
//} catch (SizeLimitExceededException e) {
// log.error("上传文件大小超过限制:",e);
} catch (Exception e) {
log.error("上传失败:",e);
request.setAttribute("upload.message", "上传文件失败!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request,
response);
}
}
uploadResult.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>uploadResult</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>
${requestScope['upload.message'] }
<a href="/upload/uploadFile.jsp">上传文件</a>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>redcrossModule</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>upload.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>FileUploadServlet</display-name>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.urt.module.upload.FileUploadServlet</servlet-class>
<!--设置初始化参数 -->
<init-param>
<param-name>savePath</param-name>
<param-value>upload</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/servlet/fileServlet</url-pattern>
</servlet-mapping>
</web-app>
参考:
使用 common-fileupload 实现文件上传
Java 文件上传组件 Apache Commons FileUpload 应用指南
分享到:
相关推荐
java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载
java实现文件保存,接收所需的jar包,(commons-fileupload-1.2.1.jar,commons-io-2.0.1.jar),亲测可用
Apache的commons-fileupload.jar可方便的实现文件的上传功能
commons-fileupload实现多文件上传,以及commons-fileupload的使用方法介绍。对于学习文件上传的朋友有参考价值
包含四个jar包,commons-fileupload.jar commons-fileupload-1.2.1-java-doc.jar commons-fileupload-1.2.1-sources.jar commons-io-1.4.jar
这是java网页上传文件的辅助jar包commons-fileupload.jar可以实现文件上传
commons-fileupload 文件上传 中文乱码 多文件上传
用开源的FileUpload组件,可以很方便的给自己的系统添加功能强大的文件上传模块。 该资源文件是两个jar打包成的压缩文件。
文件上传commons-fileupload-1.2.1.zip 文件上传commons-fileupload-1.2.1.zip 文件上传commons-fileupload-1.2.1.zip
Commons-fileupload ),该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,通常使用Commons-fileupload组件实现。注意:使用Commons-fileupload...
java_web文件下载所需的两个jar包:commons-fileupload-1.2.1、commons-io-2.0,如果需要demo,评价留言,我私发给你~
用commons-fileupload实现文件上传功能,两个文件搞定!!!!
新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet....
用于java文件上传的依赖,commons-fileupload-1.3.3。
Commons是Apache开放源代码组织中的一个Java子项目,该项目主要涉及一些开发中常用的模块,例如文件上传、命令行处理、数据库连接池、XML配置文件处理等。这些项目集合了来自世界各地软件工程师的心血,其性能、稳定...
java中经常运用到commons-fileupload.jar包和commons-io.jar包来实现文件的上传下载等功能,都是最新的版本。现将这两个文件分享给大家,希望需要的人能用的上。
commons-fileupload的jar包,导入eclipse用java实现文件上传功能
此漏洞为FileUpload 库中的一个高危漏洞,这个库作为Apache Struts 2的一部分,被用作文件上传的默认机制。攻击者可以在未经授权的情况下,执行任意代码并可获取目标系统的所有权限。 CNVD对该漏洞的综合评级为...
个人使用common-fileupload1.2.2和io-1.3.2时总结
用于servlet文件上传的组件,方便初学java web开发的人下载使用