`

Struts2 结合uploadify 注解方式上传文件 带进度条显示

 
阅读更多
	
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>    
<%@ include file="../../../WEB-INF/jsp/common/inculde/cdn.jsp" %>
<!DOCTYPE html>
<html lang="en">  
<head>
<link rel="stylesheet" type="text/css" href="<%=cdn%>/demo_utils/jsp/uploadify/css/uploadify.css">	
<script type="text/javascript" src="<%=cdn%>/demo_utils/jsp/uploadify/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<%=cdn%>/demo_utils/jsp/uploadify/js/jquery.uploadify.js"></script>
<script type="text/javascript" src="<%=cdn%>/demo_utils/jsp/uploadify/js/jquery.uploadify.min.js"></script>
<script type="text/javascript">
$(function () {
	
	//setTimeout 解决chrome 下浏览器崩溃的问题
    setTimeout(function(){
        $('#uploadify').uploadify(
        	 {
        	        uploader: '<%=cdn%>/uploadify/!uploadFiles.action',           
        	        swf: '<%=cdn%>/demo_utils/jsp/uploadify/js/uploadify.swf', 
        	        cancelImg:	"<%=cdn%>/demo_utils/jsp/uploadify/img/uploadify-cancel.png",
        	        width: 60,                          // 按钮的宽度
        	        height: 23,                         // 按钮的高度
        	        buttonText: "上传",                 // 按钮上的文字
        	        buttonCursor: 'hand',                // 按钮的鼠标图标
        	        fileObjName: 'uploadify',            // 上传参数名称 后台<span style="color:#ff0000;">action里面的属性uploadify</span>
        	        // 两个配套使用
        	        fileTypeExts: "*.*",             // 扩展名
        	        fileTypeDesc: "请选择 jpg png txt 文件",     // 文件说明
        	        auto: false,                // 选择之后,自动开始上传
        	        multi: true,               // 是否支持同时上传多个文件
        	        queueSizeLimit: 5          // 允许多文件上传的时候,同时上传文件的个数
        	 });    	
    },10)

});
</script>
</head>
<body>
        <input type="file" name="uploadify" id="uploadify" />
        <a href="javascript:$('#uploadify').uploadify('cancel')">清除第一个文件</a>
        <a href="javascript:$('#uploadify').uploadify('cancel', '*')">清除所有文件</a>
        <a href="javascript:$('#uploadify').uploadify('upload', '*')">上传所有文件</a>
</body>
</html>

 

 

 

package com.company.core.upload.action;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import com.company.core.utils.StringUtils;
import com.company.core.action.BaseAction;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 上传action
 * @author winder
 * 2014-12-03
 */
@Namespace("/uploadify")
@Action("")
@ParentPackage("cc")
//@Auth(enalbe=Roles.MANAGER)
@InterceptorRefs({
	@InterceptorRef("defaultStack")
})
public class UploadifyAction extends BaseAction implements ModelDriven {
	
	private File uploadify;
	
	private String uploadifyFileName;
	
	private static final int BUFFER_SIZE = 16 * 1024;

	
	public void uploadFiles() throws IOException{
    	String s = File.separator;
        String path = ServletActionContext.getServletContext().getRealPath("/");
        String savePath = path + "demo_utils"+s+"jsp"+s+"uploadify"+s+"uploads"; //上传完后文件存放位置		
		String newsuffix = "";
		
		String uuid = StringUtils.getUUID();
		if((uploadifyFileName != null)&&(uploadifyFileName.length()>0))
		{
			int dot = uploadifyFileName.lastIndexOf(".");
			if((dot >-1) && (dot < (uploadifyFileName.length() - 1)))
			{
				 newsuffix = uploadifyFileName.substring(dot + 1);
			}
		}
		FileInputStream fis = new FileInputStream(uploadify);
		FileOutputStream fos = new FileOutputStream(savePath+"/"+ uuid + "." + newsuffix);
		copy(fis, fos);
		fos.flush();
		fos.close();
		fis.close();
	}
	
	/**
     * 拷贝文件
     * @param src xx
     * @param dst xx
     */
	public void copy(FileInputStream fis, FileOutputStream fos) {
		try {
			InputStream in = null;
			OutputStream out = null;
			try {
				in = new BufferedInputStream(fis,BUFFER_SIZE);
				out = new BufferedOutputStream(fos,BUFFER_SIZE);
				byte[] buffer = new byte[BUFFER_SIZE];
				while (in.read(buffer) > 0) {
					out.write(buffer);
				}
			} finally {
				if (null != in) {
					in.close();
				}
				if (null != out) {
					out.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}	
	
	
	
	public File getUploadify() {
		return uploadify;
	}
	public void setUploadify(File uploadify) {
		this.uploadify = uploadify;
	}
	public String getUploadifyFileName() {
		return uploadifyFileName;
	}
	public void setUploadifyFileName(String uploadifyFileName) {
		this.uploadifyFileName = uploadifyFileName;
	}

	public Object getModel() {
		// TODO Auto-generated method stub
		return null;
	}	
	
}

 

 

分享到:
评论

相关推荐

    struts2结合uploadify上传进度条

    在Struts2中集成Uploadify3.2.1可以让用户实现文件上传功能,并且带有进度条显示,增强了用户体验。Uploadify是一个JavaScript库,它利用Flash技术实现异步文件上传,并提供了自定义的进度条显示。 要实现"struts2...

    Struts2+uploadify上传文件

    2. **进度条显示**:在上传过程中,可以显示每个文件的上传进度,提升用户体验。 3. **错误处理**:可以自定义错误提示,比如文件大小超过限制、文件类型不允许等。 4. **自定义样式**:Uploadify提供了丰富的CSS...

    Struts2实现Uploadify多文件上传

    其中,`swf`是Uploadify的SWF文件,`uploader`是Struts2 Action的URL,`onUploadProgress`回调函数用于更新上传进度条。 4. **文件存储**: 在服务器端,Action的执行方法接收到文件后,需要将其保存到服务器的...

    Struts2uploadify3.1

    2. **进度条显示**:在上传过程中,Uploadify能够实时显示文件上传的进度,让用户了解文件上传的状态。 3. **多文件选择**:用户可以一次性选择多个文件进行上传,提高了上传效率。 4. **错误处理**:当上传过程中...

    Struts2结合Jquery.uploadify上传插件的应用

    以上就是Struts2结合jQuery.uploadify实现文件上传的基本流程。实际应用中,可能还需要考虑其他因素,如安全性(防止文件覆盖、XSS攻击等)、性能优化(批量上传、分片上传等)等。通过熟练掌握这些知识点,可以构建...

    jquery_uploadify实现的下载进度条

    通过以上步骤,你就能在Struts2环境中利用jQuery Uploadify实现一个功能完善的文件上传组件,其中包括下载进度条的功能。这个过程不仅提升了用户体验,也展示了现代Web开发中动态交互设计的魅力。

    struts2 jquery.uploadify

    Struts2 jQuery Uploadify是一个整合了Struts2框架与jQuery Uploadify插件的示例项目,主要用于实现文件上传的功能。这个简单的demo展示了如何在Struts2应用中集成jQuery Uploadify,以便提供用户友好的、多文件异步...

    struts2+jquery.uploadify

    在本篇文章中,我们将深入探讨如何结合Struts2和jQuery的uploadify插件来实现文件上传功能,这在现代Web应用程序中是非常常见的需求。 首先,Struts2是一个基于MVC(Model-View-Controller)架构的开源Java框架,它...

    uploadify和struts2工程实例

    将uploadify与Struts2结合,可以创建高效、用户友好的文件上传系统。以下是对这个工程实例的详细说明。 首先,`uploadify`插件提供了异步上传的功能,用户可以选择多个文件并一次性上传,无需等待每个文件完全上传...

    jQuery uploadify上传文件(JAVA版+Struts2即时预览效果)

    在本文中,我们将深入探讨如何在Java环境下,结合Struts2框架和jQuery的uploadify插件实现文件上传功能,特别是解决中文乱码问题。这个功能对于任何需要用户交互式上传内容的Web应用都是至关重要的。 首先,jQuery ...

    jquery.uploadify+Struts2整合配置

    Uploadify是基于jQuery的一个插件,它允许用户通过异步方式上传文件,提供了丰富的自定义选项和用户体验优化功能,如进度条显示、多文件上传、预览等。 Struts2是一个强大的Java Web框架,基于MVC(Model-View-...

    struts2 + jquery uploadfiy

    总之,Struts2和jQuery Uploadify的结合是Web开发中处理文件上传的一种强大解决方案。通过合理的配置和定制,可以满足各种复杂的文件上传需求,为用户提供流畅的交互体验。在实际项目中,务必注意文件安全问题,如...

    uploadify+struts2+json前台动态向后台传数据

    1. **Uploadify**:Uploadify是一款基于jQuery的文件上传插件,它提供了直观、用户友好的界面,支持多文件选择、进度条显示和自定义样式等特性。在本示例中,Uploadify用于处理用户选择的文件,将其转化为可以发送到...

    一次选择多个文件实现上传功能

    Struts2与Uploadify结合,可以轻松处理前端提交的多文件上传请求,并将这些文件保存在服务器上。 实现多文件上传的步骤如下: 1. **前端配置**:在HTML页面中,我们需要引入Uploadify的JavaScript和CSS文件,然后...

    ssh加ajax注解版

    5. **Uploadify上传插件**:Uploadify是一个基于jQuery的文件上传插件,它支持多文件选择、进度条显示和错误处理等功能。在这个项目中,Uploadify可能被用来优化文件上传体验,使用户能够看到上传进度并实时获取反馈...

Global site tag (gtag.js) - Google Analytics