最近在做一个视频上传功能,选择了uploadify,但我需要传入其他的参数,比如视频标题和视频描述,之前看了无数的文章,后台始终获取不到值,折腾了很久终于解决,现在和大家分享一下我的方法。
HTML代码:
视频标题:<input type="text" name="fileTitle" id="fileTitle"/><br/><br/>
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify"/>
<p>
<a href="javascript:$('#uploadify').uploadify('upload','*')">上传</a>|
<a href="javascript:$('#uploadify').uploadify('cancel','*')">取消上传</a>
</p>
主要JS代码:
$("#uploadify").uploadify({
height: 30,
swf: 'uploadify/uploadify.swf',
uploader: 'url',//为后台方法的地址
width: 120,
fileObjName: 'uploadify',//定义传入后台服务器时对象的名称
buttonText: "选择文件",
auto: false,
fileTypeExts: '*.flv',
fileTypeDesc: '只能上传flv格式视频文件(*.flv)',
fileSizeLimit: '10MB',//文件上传的大小限制,如果是字符串单位可以是B KB MB GB,默认是0,表示无限制
formData: { 'fileTitle':'' },
onUploadStart : function(file) {
//校验
var fileTitle = $('#fileTitle').val();
if(fileTitle.replace(/\s/g,'') == ''){
alert("视频标题不能为空!");
return false;
}
$("#uploadify").uploadify("settings", "formData", { 'fileTitle': fileTitle });//给参数赋值
},
onQueueComplete : function (event, data) {
//alert($('#fileTitle').val());
alert('视频上传成功!');
window.location.reload();//刷新页面
}
});
uploadify获取额外参数主要代码:
$("#uploadify").uploadify("settings", "formData", { 'fileTitle':$('#fileTitle').val() });//给参数赋值
与onUploadStart配合使用,意为在上传开始之前进行取值操作。
后台Java代码获取值(本人的项目是SSH框架,我所使用的是Struts的ActionContext):
String[] fileTitle = (String[]) ActionContext.getContext().getParameters().get("fileTitle");
System.out.println("fileTitle" + fileTitle[0]);
这里要注意,通过ActionContext.getContext().getParameters()方法得到的是一个数组!!!