您的位置:首页 > Web前端 > JavaScript

flash上传组件swfupload的坑点及解决方法

2016-01-22 11:39 676 查看
前两天的文章说了项目中因为使用swfupload组件过程中,遇到一特殊需求无法满足,自己写了一个用iframe + form方案实现的异步处理方案。

今天就来总结归纳一下swfupload组件使用过程中会常遇到的问题。我就直接贴代码,问题和解决方案都在注释里标明了。

/*在每个上传组件生成时,传递button_placeholder_id 和方便回调处理的dom */
$('.uploadbtn').each(function(){
doupload($(this).attr('id'),$(this).closest('a'));
})
function doupload(btnid,dom){
return new SWFUpload ({
/*
*如果你需要使用组件上传时同时提交自己的数据要用到post_params参数
*但请注意,一定要将传参进行 <span style="font-family: Arial, Helvetica, sans-serif;">encodeURIComponent 编码</span>
*post_params:{
argument0: encodeURIComponent(argument0)
*}
*一直认为不指明button_image_url就报错的原因是必须指明一个路径,不然就会js报错。细细调试发现其实指明 preserve_relative_urls : true 和button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT 就达到了不指明上传图片也可以解决不显示flash播放图标的问题,明显这是组件的bug
*另外要注意如果upload_url设置的为相对路径,flash_url设置为绝对地址,
*那么上传的upload_url的host就指向了flash_url的主域了
*所以最好两者都指定为绝对路径
*/
flash_url : "http://s***038d15/swfupload2.5.fix.swf",
upload_url: 'http://dia***oad?from=cert',
file_types : "*.jpg;*.png;*.gif;*.tif;",
file_size_limit : "200 kB",
preserve_relative_urls : true,
button_placeholder_id : btnid,
button_width : 120,
button_height : 25,
button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
file_dialog_complete_handler : function(){
this.startUpload();
},
upload_success_handler : function(fileObject, serverData, receivedResponse){
if(serverData){
var fileval = serverData.split(',');
//console.log(dom.next().html(fileObject.name),fileObject,serverData)
dom.nextAll('.filename').html(fileObject.name).nextAll('.fileval').val(fileval[1]).attr('pid','');
}
}
})
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息