`
chengyu2099
  • 浏览: 471558 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

swfupload struts2 webwork 批量上传

阅读更多
以前做个项目是 用到了swfupload
http://stephen830.iteye.com/blog/255583?page=3#comments
这里已经说的很清楚了
由于框架整合,spring3.0+webwork2.27+hibernate3.0
上传没有用了,吼吼
搞了我1夜才搞出头绪,被绕在代码里了,最后试试了,才发现时框架问题。
因为webwork2(structs2)的上传机制的问题额
其中我把 修改的东西贴出来,如果遇到什么问题,请留言哦
<%@ page contentType="text/html;charset=UTF-8"%>
<%
    double perMaxSize = 1.5;//单个文件允许的max大小
    String sizeUnit = "MB";//perMaxSize数据对应的单位
    String ext = "*.jpg;*.jpeg;*.gif";//允许上传的文件类型
    //文件上传提交的目标页面
	StringBuffer uploadUrl = new StringBuffer("http://");
	uploadUrl.append(request.getHeader("Host"));
	uploadUrl.append(request.getContextPath());
	uploadUrl.append("/WebPage/album/swfUpload.action?test=1111%>");
<%= uploadUrl %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>批量相片上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.swfobject.js"></script>
<script type="text/javascript" src="js/swfupload.queue.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>

<script type="text/javascript">
var swfu;

SWFUpload.onload = function () {
	var settings = {
		flash_url : "js/swfupload.swf",
		upload_url: "<%=uploadUrl.toString()%>",
		post_params: {
			"user_id" : "stephen830",
			"pass_id" : "123456"
		},
		file_size_limit : "<%=perMaxSize%> <%=sizeUnit%>",
		file_types : "<%=ext%>",
		file_types_description : "<%=ext%>",
		file_upload_limit : 100,
		file_queue_limit : 0,
		custom_settings : {
			progressTarget : "fsUploadProgress",
			cancelButtonId : "btnCancel",
			uploadButtonId : "btnUpload",
			myFileListTarget : "idFileList"
		},
		debug:false,
		auto_upload:false,
		// Button Settings
		button_image_url : "images/XPButtonUploadText_61x22.png",	// Relative to the SWF file
		button_placeholder_id : "spanButtonPlaceholder",
		button_width: 61,
		button_height: 22,

		// The event handler functions are defined in handlers.js
		swfupload_loaded_handler : swfUploadLoaded,
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
		queue_complete_handler : queueComplete,	// Queue plugin event
		
		// SWFObject settings
		minimum_flash_version : "9.0.28",
		swfupload_pre_load_handler : swfUploadPreLoad,
		swfupload_load_failed_handler : swfUploadLoadFailed
	};

	swfu = new SWFUpload(settings);
}

</script>
</head>
<body bgcolor="#FCFCFC" topmargin="0px" leftmargin="10px" rightmargin="10px" scroll="yes">
<table width="100%" cellspacing="4" cellpadding="4" border="0" bgcolor="#FCFCFC">
	<tr> 
	<td class="DH1">
	<table width="100%" cellspacing="4" cellpadding="4" border="0" bgcolor="#FCFCFC">
	<tr>
	<td class="DH2">
	<STRONG>批量上传相片 (支持的相片类型:<%=ext%>;单个相片最大不能超过:<%=perMaxSize%> <%=sizeUnit%>)</STRONG> 
	</td><td class="DH2" align="right"></td>
	</tr>
	</table>
<div id="content">
	<form id="form1" action="#" method="post" enctype="multipart/form-data">
		<input type="hidden" name="test" value="000000"/>
		<table width="90%" cellspacing="0" cellpadding="0" border="0"><tr><td>
		<span id="spanButtonPlaceholder"></span>
		<input id="btnUpload" type="button" value="上传相片" class="btn" />
		<input id="btnCancel" type="button" value="取消全部上传" disabled="disabled" class="btn" /></td>
		</tr></table>
		<table id="idFileList" class="uploadFileList"><tr class="uploadTitle"><td><B>文件名</B></td><td><B>文件大小</B></td><td width=100px><B>状态</B></td><td width=35px>&nbsp;</td></tr></table>
		等待上传 <span id="idFileListCount">0</span> 个 ,成功上传 <span id="idFileListSuccessUploadCount">0</span> 个
		<div id="divSWFUploadUI" style="visibility: hidden;"></div>
		<noscript style="display: block; margin: 10px 25px; padding: 10px 15px;">
			很抱歉,相片上传界面无法载入,请将浏览器设置成支持JavaScript。
		</noscript>
		<div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
			相片上传界面正在载入,请稍后...
		</div>
		<div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
			相片上传界面载入失败,请确保浏览器已经开启对JavaScript的支持,并且已经安装可以工作的Flash插件版本。
		</div>
		<div id="divAlternateContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
			很抱歉,相片上传界面无法载入,请安装或者升级您的Flash插件。
			请访问: <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">Adobe网站</a> 获取最新的Flash插件。
		</div>
	</form>
</div>
</td></tr></table>
</body>
</html>

uploadUrl.append("/WebPage/album/swfUpload.action?test=1111%>");
如果没有参数就算咯
ACTION
/**
     * 文件上传处理
     * @return
     */
    private File[] files; // 多个文件对象数组 写个GET/SET 3个属性
	private String[] filesFileName; // 文件对应的真实文件名 单个文件上传时不需要此属性定义
	private String filesContentType;
    
    public String swfUpload()
    {
    	System.out.println("********************swfUpload.action***********************");
    	System.out.println("======"+ServletActionContext.getRequest().getParameter("test"));
    	String destPathString =  "";
		String fileName = "";
    	if(files != null)
		{
			File file = files[0]; // 第一个图片 - one
//			保证图片名唯一
			String tName = filesFileName[0];
			System.out.println("文件上传原图片名字-----:"+tName);
			String endPhoto = tName.substring(tName.lastIndexOf("."),tName.length()).toLowerCase();
//			处理中文图片名字不显示
			String fn = String.valueOf(System.currentTimeMillis()+filesFileName[0].hashCode());
			System.out.println("中文处理后的图片名字:"+fn);
			System.out.println("保存的图片:"+fn+" "+endPhoto);
			fileName = fn+endPhoto;
			//文件转移到 upload 下面
			destPathString = ServletActionContext.getRequest().getRealPath("upload")+File.separator+fileName;
			System.out.println("临时文件的保存路径:"+file.getPath()+"\n"+"图片保存路径:"+destPathString);
			FileUtilTwo c = new FileUtilTwo(file.getPath(), destPathString);
			c.doCopy();
		}
    	try {
			ServletActionContext.getResponse().getWriter().write("successed");
		} catch (IOException e) {
			e.printStackTrace();
		}
    	return "";
    }

swfupload.js
修改的部分,files和ACTION 一致
// 程仁银 webwork2 上传机制 maomaoyu2099@163.com
	
	this.ensureDefault("upload_url", "");
	this.ensureDefault("file_post_name", "files");

也可以自定义参数,后台直接获取就可以了
function getAlbumID()
{
	document.getElementById("hiddenID").value=document.getElementById('choseAlbum').value;
	var album_ID = document.getElementById("hiddenID").value;
	swfu.addPostParam("chengRenYin",album_ID);
}

System.out.println("==chengRenYin===="+ServletActionContext.getRequest().getParameter("chengRenYin"));
分享到:
评论
5 楼 千之夜 2013-09-18  
楼主能不能给一份可以跑起来的代码。谢谢
houlimei1118@163.com
4 楼 itstudy123 2011-04-01  
可以给我一份完整的工程吗
3 楼 kanwangzjm 2011-03-10  
能给传一份代码吗?
2 楼 zj2lzh 2010-12-17  
可以给我一份完整的工程吗?zj2lzh@163.com  谢谢
1 楼 naughtname 2010-07-26  
兄弟,这正是我要的东西。webwork上传很理想的工具!先测试一把。

相关推荐

    SWFupload_struts1.rar_java 批量上传_struts1批量下载_swfupload struts1

    标题 "SWFupload_struts1.rar_java 批量上传_struts1批量下载_swfupload struts1" 提供的信息表明,这是一个与Java编程语言、Struts1框架以及SWFUpload工具相关的项目或教程。SWFUpload是一个流行的老牌JavaScript和...

    swfupload与struts2整合文件上传/完整Java实例

    将SwfUpload与Struts2整合,可以创建高效、友好的文件上传界面。接下来,我们将详细探讨这个主题。 首先,SwfUpload的工作原理。它利用了Adobe Flash Player插件,隐藏了复杂的文件选择和上传过程,提供了一种直观...

    extjs与swfupload实现java文件批量上传 s2sh

    这里我们将深入探讨如何在Java环境中,结合Struts2、Spring(s2sh框架)以及ExtJS和SWFUpload实现文件批量上传。 **1. ExtJS**:这是一个用于创建桌面级Web应用的JavaScript框架,提供了丰富的组件和强大的数据管理...

    ext struts2 swfupload 跨域文件上传

    "ext struts2 swfupload 跨域文件上传"这个主题涉及到三个关键技术和概念:EXTJS(Ext JS)、Struts2以及SwfUpload,它们共同解决了Web应用中的跨域文件上传问题。 EXTJS是一种强大的JavaScript库,用于构建富...

    SWFUpload+Struts2文件上传,支持多文件上传和进度显示

    SWFUpload上传组件的一个完整的例子,后台由Struts2完成,有上传进度显示,可以多文件上传,如果你想使用SWFUpload组件但还不知道怎样使用,可以下载下来运行一下试试,看一下源码就知道了。

    SWFUpload批量上传图片

    SWFUpload是一款强大的JavaScript与Flash相结合的文件上传组件,它被广泛用于网页中的批量图片上传功能。这个"SWFUpload批量上传图片"的项目是一个基于MyEclipse的工程实例,旨在帮助开发者理解和实现批量上传图片的...

    swfupload java 上传进度条 上传时间 速度 struts2 开源

    SwfUpload 是一个开源的JavaScript库,用于在Web应用程序中实现文件上传功能,它与Java后端技术如Struts2框架结合使用,可以提供高级的文件上传体验。在这个项目中,SwfUpload 被用来展示文件上传的进度、速度以及...

    SwfUpload(文件批量上传,完美运行,注释丰富)

    SwfUpload 是一款开源的JavaScript库,用于实现文件的批量上传功能。它通过Flash插件在Web页面上提供用户友好的界面,允许用户选择多个文件并一次性上传,极大地提升了文件上传的效率。在这个项目中,"完美运行"指的...

    SWFupload_文件批量上传

    SWFupload是一款强大的JavaScript库,专门用于实现网页上的文件批量上传功能。它通过Flash插件在浏览器端提供用户友好的界面,支持多文件选择、进度条显示、预览功能等,极大地提升了用户在上传大量文件时的体验。...

    swfupload+asp+access批量上传图片

    首先,"swfupload" 是一个开源的Flash上传组件,它允许用户在网页上实现文件的批量上传功能,尤其适用于处理大文件或多个文件的上传需求。其次,"asp" 是Active Server Pages的缩写,是一种微软开发的服务器端脚本...

    基于SwfUpload插件的文件批量上传插件GooUploader

    可设定为是否单个上传,或者是批量上传; 可在上传过程中取消上传(单个或者批量取消); 在批量选择文件后,可以手工选择上传其中部分文件; 可在上传文件时顺带上传REQUEST传参,如SESSION_ID; 选择批量文件,在上传前...

    struts2+swfupload上传

    Struts2和SwfUpload是两个在Web开发中用于文件上传的工具,它们结合使用可以提供一种具有用户体验优化的文件上传功能,特别是包含了进度条显示,使得用户能够清晰地了解文件上传的状态。以下是对这两个技术及其结合...

    swfupload+struts2多文件上传的例子

    本教程将详细讲解如何利用SWFUpload与Struts2框架来实现多文件上传的示例。 首先,让我们了解SWFUpload。SWFUpload是一款开源的Flash上传组件,它允许用户在不离开当前页面的情况下上传多个文件。通过在浏览器上...

    java+struts+swfupload文件上传下载

    2. **创建Struts Action**:在Struts框架中创建一个Action类,用于接收SwfUpload上传的文件。这个Action需要继承自Struts的抽象类,并覆盖上传方法。 3. **处理上传请求**:在Action的上传方法中,使用Java的IO流...

    解决Struts2与SWFupload上传冲突问题

    Struts2是一个基于MVC设计模式的Java Web框架,而SWFupload则是一个JavaScript库,用于实现Flash的文件上传功能。两者结合使用时,可能会遇到一些冲突问题,主要是由于它们处理文件上传的方式不同所导致的。下面将...

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

    10. **工具集成**:SWFUpload可以与各种Java Web框架(如Spring MVC、Struts2)集成,理解这些框架如何处理文件上传会更便于实际开发。 博客链接中的内容可能包含了使用SWFUpload的具体步骤和示例,你可以参考该...

    Asp.Net+flash批量上传图片+预览(此版带版权)

    2. 性能优化:批量上传可能涉及大量文件,应考虑分批处理,避免一次性加载过多数据导致服务器压力过大。 3. 用户体验:提供清晰的上传进度反馈,以及错误处理提示。 4. 兼容性:考虑到不同浏览器对HTML5和Flash的...

    Struts 做的批量上传

    Struts 做的批量上传任何文件

    swfupload 批量上传文件

    SWFUpload 是一个流行的JavaScript库,它允许在Web应用程序中实现高质量的文件批量上传功能。这个工具利用Flash技术,可以在不刷新页面的情况下实现多文件选择和上传,极大地提升了用户体验。在本文中,我们将深入...

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

    SWFUpload是一个开源的JavaScript库,它允许网页实现高级的文件上传功能,特别是批量上传和显示上传进度。这个技术结合了SWF(ShockWave Flash)对象和JavaScript,为用户提供了一种友好的、交互式的文件上传体验。...

Global site tag (gtag.js) - Google Analytics