SWFUpload文件上传

Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONEMicrosoftInternetExplorer4

官方网址:http://swfupload.org/

中文的说明文档:http://www.v-sky.com/doc/swfupload/v2.1.0/Documentation.html Version2.1.0

SWFupload是利用flash上传文件的,支持多文件上传,SWFupload的多文件上传是发送多个Http请求,每一个请求发送一个文件,每一个文件可以携带自己的file parameters,在这个项目中这个file parameters可以为重命名文件名。

在中文文档中描述的很清楚,文件在被选择进队列到上传成功,文件状态的变迁。在每一个过程中应该处理什么,会触发那个函数,文档中描述比较清楚。

我主要描述一下在项目中遇到的问题:

1、 flash上传文件的Cookie bug

a) 先说一下我们的项目结构吧,所有的受保护请求都被一个拦截器(Inspector)拦截,在拦截器中判断用户的合法性。

b) 在非IE内核的浏览器中发送请求时,flash将非持久性的cookie(这个不知道怎么理解,可能是每一个请求所带的cookie吧,不是通过server显式写到客户端的。)全部过滤掉,不给server发送,当然包括JSESSIONID,这样导致在Firefox等非IE内核的浏览器下无法上传文件。

c) 解决办法,将失去的这个JSESSIONID作为参数提交给server,重新加入对JSESSIONID的支持代码如下:

if(!jQuery.browser.msie)

{

var start = url.indexOf('doUpload.do') + 11;

url = url.substring(0, start) + ';jsessionid=' +Upload.getCookie('JSESSIONID') + url.substr(start);

}

Upload.getCookie = function(key)

{

var acookie = document.cookie.split("; ");

for(var i = 0; i < acookie.length; i++)

{

var arr = acookie[i].split("=");

if(key == arr[0] && arr.length > 1)

{

return unescape(arr[1]);

}

}

return '';

}

d) 这样既在请求的URL中加入JESSIONID,这里注意不能使用SWFuploadaddPostParam方法。

2、 第二个大问题就是flash在上传的过程,将所有的文件类型全部格式化为一种:application/octet-stream,这样在解析过程中取不到实际的文件类型,这个问题目前还不知道如何解决,不过有一个比较笨的办法就是,把常用的那些文件的扩展名和 MIME TYPE做一个映射,根据客户端传上来的扩展名,获得MIME TYPE。但是这个方法存在很多缺陷,例如,客户端把txt扩展名手动更改为exe,这样,获得的类型其实是不准确的。

其他的在处理上传的过程中还是比较顺利的。因为项目最终还没有完成,暂时就写这么多吧!

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/200919/viewspace-1029245/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/200919/viewspace-1029245/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值