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> </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>

[color=red]uploadUrl.append("/WebPage/album/swfUpload.action?test=1111%>");[/color]
如果没有参数就算咯
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"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值