`
dyccsxg
  • 浏览: 205298 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类

SWFUpload+commons-fileupload 上传文件

    博客分类:
  • Java
阅读更多

说明:使用SWFUpload 上传文件,可在客户端校验文件大小,动态显示上传进度等。

SWFUpload 官网:http://www.swfupload.org/project 

SWFUpload Demo: http://demo.swfupload.org/v220/ 

// client 端

<%@page language="java" contentType="text/html;charset=utf-8"%>
<%
    String contextPath = request.getContextPath();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Simple Upload Demo</title>
<link type="text/css" rel="stylesheet" href="simple.css"/>
<script type="text/javascript" src="<%=contextPath%>/js/swfupload.js"></script>
<script type="text/javascript" src="handlers.js"></script>
<script type="text/javascript">
var swfu;
window.onload = function () {
    swfu = new SWFUpload({
        // Flash Settings
        flash_url : "<%=contextPath%>/flash/swfupload.swf",
    
        // Backend settings
        preserve_relative_urls: true,                 // 保留相对路径不做转换
        upload_url: "<%=contextPath%>/uploadServlet", // servlet path
                 
        // Flash file settings
        file_types : "*.jpg;*.png",
        file_types_description : "Image File",
        file_size_limit : "10 MB",
        file_queue_limit : "1",
    
        // Event handler settings
        file_dialog_start_handler: fileDialogStart, // fired after selectFile is called.
        file_queued_handler : fileQueued,           // fired after file selection dialog close.
        file_queue_error_handler : fileQueueError,  // fired when file was not queued.
        file_dialog_complete_handler : fileDialogComplete,// fired when all files queued.
                 
        upload_progress_handler : uploadProgress,  // upload status
        upload_error_handler : uploadError,        // fired when upload error thrown
        upload_success_handler : uploadSuccess,    // fired when server return a 200 status
        upload_complete_handler : uploadComplete,  // fired at the end of an upload cycle
    
        // Button Settings
        button_image_url : "<%=contextPath%>/image/btnUpload.png",
        button_placeholder_id : "btnPlaceHolder",
        button_width: 61,
        button_height: 22,
        button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE, // 单选

        // debug infor
        debug:false
    });
};
    </script>
</head>
<body>

<div id="uploadContent">
    <input id="txtFileName" type="text" disabled="disabled" value="" style="width:151px;"/>
    <span id="btnPlaceHolder"></span>
    <div id="uploadProgress">
        <div id="colorStatus"></div>
        <div id="percentTxt"></div>
    </div>
</div>

<input id="btnStartUpload" type="button" value="开始上传" onclick="startUpload()" disabled="disabled" style="position:relative;left:200px;"/>

</body>
</html>

 

 // server 端

 

package org.demo.tomcat;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
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.FileCleanerCleanup;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileCleaningTracker;

/**
 * 
 * @author  
 * @date    2010-12-16
 * @file    org.demo.tomcat.UploadServlet.java
 */
public class UploadServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		
		boolean isMultipart = ServletFileUpload.isMultipartContent(req);
		if (!isMultipart){
			System.out.println(">> This wasn't a file upload request!");
			return;
		}
		
		PrintWriter out = resp.getWriter();
		
		// create factory and file cleanup tracker
		FileCleaningTracker tracker = FileCleanerCleanup.getFileCleaningTracker(getServletContext());
		File tmpDir = new File(getBaseDir() + "/upload/temp");
		DiskFileItemFactory factory = new DiskFileItemFactory(
				DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD,
				tmpDir);
		factory.setFileCleaningTracker(tracker);
		
		// save upload file to disk
		ServletFileUpload upload = new ServletFileUpload(factory);
		try {
			List<FileItem> items = upload.parseRequest(req);
			String fileName = null;
			File savefile = null;
			for (FileItem item : items){
				if (!item.isFormField()){
					// 确定是文件而不是一个普通的表单字段
					fileName = item.getName();
					savefile = new File(getBaseDir() + "/upload/" + fileName);
					item.write(savefile);
					System.out.println(">> [save] " + savefile.getAbsolutePath());

					// to client info
					out.print("fileId=" + savefile.getAbsolutePath());
					out.flush();
				}
			}
		} catch (Exception e) {
			System.out.println(">> " + e.getMessage());
			throw new IOException(e.getMessage());
		}
	}
	
	/**
	 * Return the WEB-INF directory.
	 * @return
	 */
	private String getBaseDir(){
		return this.getServletContext().getRealPath("/WEB-INF");
	}
}

  

分享到:
评论
8 楼 sunysh005 2016-04-22  
界面太丑了,功能没有问题
7 楼 liwh1989 2016-02-26  
liwh1989 写道
       

6 楼 liwh1989 2016-02-26  
5 楼 liwh1989 2016-02-26  
       
4 楼 dpz916 2014-10-20  
在地址栏里敲什么能看到运行结果?
3 楼 jjb_bobby 2013-12-27  
maylorChao 写道
楼主你确定可以用?

当然这是个源程序,你需要导入到elipse/MyEclipse工作空间,然后再部署到Tomcat下即可。顺便说一下我的环境是Tomcat6.0.36,jdk1.6.0_45。
2 楼 maylorChao 2013-12-19  
楼主你确定可以用?
1 楼 jjb_bobby 2013-12-19  
例子不错,而且程序包可直接运行。

相关推荐

    使用jQuery+SWFUpload+Commons-FileUpload实现带进度条的上传

    总之,结合jQuery、SWFUpload和Apache Commons FileUpload,我们可以创建一个功能完备且用户体验良好的文件上传系统,包括多文件选择、进度反馈以及安全的服务器端处理。这个过程涉及到前端和后端的协作,需要对...

    swfupload+fileupload文件批量上传,带进度条百分比显示

    在描述中提到的项目,显然利用了SWFUpload与FileUpload的组合,来实现带有进度条百分比显示的文件批量上传功能,并且可以在Eclipse环境中直接运行,这通常意味着该项目是一个基于Java的Web应用。 1. **SWFUpload...

    jquery+swfupload+servlet_多文件上传,支持ctrl和shift多选择的功能

    使用诸如Apache Commons FileUpload之类的库解析文件数据。 4. **处理文件保存**: 将上传的文件保存到服务器,可以是本地文件系统,也可以是云存储服务。同时,记录每个文件的上传状态。 5. **响应前端**: 生成一...

    swfupload使用org.apache.commons.fileupload 实现上传文件

    在本教程中,我们将深入探讨如何使用SwfUpload与`org.apache.commons.fileupload`库来实现文件上传功能。 Apache Commons FileUpload 是一个Java库,专门用于处理HTTP请求中的多部分数据,也就是通常用于文件上传的...

    java swfupload,上传,图片上传,文件上传,批量上传

    Java中的SWFUpload是一种流行的文件上传工具,尤其适用于处理图片和文件的批量上传。这个工具在Web开发中被广泛使用,因为它提供了用户友好的界面和高效的数据传输能力。SWFUpload是一个基于Flash的组件,它允许用户...

    SwfUploadDome

    在SwfUploadDome实例中,后端采用了Apache的Commons-Fileupload库来处理上传的文件。Commons-Fileupload是Java Web开发中的一个强大工具,专门用于处理HTTP请求中的多部分数据,即文件上传。它提供了以下关键特性: ...

    SWFUpload+java 包含java代码的实现

    1. **Multipart请求解析**:SWFUpload上传的文件是以Multipart形式发送的,因此,你需要一个能够解析这种类型的请求的工具或框架,如Apache Commons FileUpload。它能帮助你从请求中分离出文件内容,并存储到服务器...

    java 文件上传(SWFUPLOAD组件)多文件上传 异步上传

    Java提供了多种处理文件上传的方式,如使用Servlet 3.0的Part接口,或者是Apache Commons FileUpload库。当接收到上传请求时,你需要读取请求中的文件流,并将其保存到服务器的指定位置。这里要注意文件大小限制、...

    SWFUpload文件上传(java版)

    在Java中,可以使用Apache Commons FileUpload库来简化文件上传的处理过程。这个库提供了处理multipart/form-data请求的工具,方便从请求中解析文件。 总结,SWFUpload结合jQuery提供了一种优雅的多文件上传解决...

    java动态上传excle文件并导出数据.pdf

    - **Apache Commons FileUpload** 和 **Apache Commons IO**:这两个库是Java处理文件上传的核心。`commons-fileupload-1.2.2.jar`和`commons-io-2.0.jar`负责解析请求中的多部分数据,从中提取上传的文件。 - **...

    Java源码的swfupload多文件上传 strut2demo

    在Java中,可以使用Apache Commons FileUpload库来帮助处理文件上传,它提供了处理文件上传的工具类和异常处理机制。 为了保证安全性,我们还需要防范恶意文件上传,例如检查文件扩展名、MIME类型等,防止上传脚本...

    swfupload jsp java

    SwfUpload 是一款开源的Flash上传组件,它允许用户在网页中实现拖放式或点击式的文件上传功能,尤其适用于需要处理大文件或多文件上传的场景。在Java和JSP环境中,SwfUpload能与后端服务器进行交互,处理文件上传...

    Java 多文件上传

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用程序中,用户可能需要上传一组相关的文件,...无论你选择Apache Commons FileUpload、Spring MVC还是SWFupload,都需要确保文件上传过程的安全性和用户体验。

    使用ExtJs的插件UploadDialog+struts2.0实现多文件上传

    3. **后端处理**:在Action类中,定义一个方法来接收上传的文件,利用Java的Commons FileUpload库解析上传的多部分数据流。在处理过程中,你可以对文件进行验证、存储或处理。 4. **安全考虑**:确保限制上传文件的...

    SwfUpload结合Java

    可以使用Apache Commons FileUpload库或者其他类似库来解析请求中的文件部分。 4. **安全性**:在处理文件上传时,安全是非常重要的。你需要验证上传文件的类型、大小,防止恶意文件如病毒或脚本的上传。同时,文件...

    Struts2 经典flash上传文件

    - Struts2提供了一个名为`CommonsFileUploadInterceptor`的拦截器,它基于Apache Commons FileUpload库来处理文件上传。首先,需要在`struts.xml`配置文件中启用此拦截器。 - 需要在Action类中创建一个`java.io....

    文件的上传下载案例集合

    前端表单需要设置`enctype="multipart/form-data"`来支持文件上传,而后端则使用Servlet或JSP自定义标签库如Apache Commons FileUpload来解析请求中的文件数据。下载时,服务器会生成一个包含文件内容的HTTP响应,并...

    Ext 文件上传参考文档

    Java中可以使用Apache Commons FileUpload库来解析上传请求中的多部分数据。 7. **错误处理和反馈**:在文件上传过程中,可能出现各种错误,如文件过大、格式不正确、网络问题等。因此,良好的用户反馈机制是必要的...

    flash实现多文件上传

    1. **Multipart解析**:Java中,使用`Commons FileUpload`库解析多部分表单数据,获取上传的文件流。 2. **文件存储**:使用Java IO类如`FileOutputStream`将文件保存到服务器磁盘,或者存入数据库(对于大文件不...

Global site tag (gtag.js) - Google Analytics