jquery uploadfiy文件资料

jQuery插件uploadify使用注意事项

最近因为项目需要上传文件,所以折腾了一下文件上传的插件,因为涉及到跨域,所以一开始便打算使用iframe或flash的,但是用iframe的话有个不好获取页面中的数据,所以决定使用flash。最后选定uploadify这个插件。

一、使用uploadify插件如何设置跨域上传:

1、首先要将scriptAccess参数设置为always;

2、将uploadify.swf文件放置在上传页面的服务器上;

(注意:这里文件放置的地址不是指文件存储的目标服务器,而是指和html文件所在的服务器,这个官网上的faq里面好像写错了,就因为这个折腾了我好长时间……)。

3、将一个名为crossdomain.xml的XML文件保存在文件要存储的机器上(目标机器)。

crossdomain.xml文件的内容如下:

<?xml version=”1.0″?>

<!DOCTYPE cross-domain-policy SYSTEM “http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>

<cross-domain-policy>

<allow-access-from domain=”*” />

</cross-domain-policy>

二、使用uploadify如何在上传文件时附加动态数据:

1、自动上传时动态设置参数,需将methon参数设置 为:‘methon’:‘get’;

2、获取动态数据时网上基本有2种方法:

①一种是在点上传前先调用uploadifySettings函数,再上传,这种方法有个不好的地方就是自动上传时无法获取到动态数据:

<a href=”javascript:$(‘#uploadify’).uploadifySettings(‘scriptData’,{‘folederid’:folderId}); jQuery(‘#uploadify’).uploadifyUpload()”>开始上传</a>

②还有一种方法更为优雅,而且也没有自动上传时无法获取数据的问题。这种方法是重写onSelect方法:

‘onSelect’         : function (event, queueID, fileObj) {
$(“#uploadify”).uploadifySettings(‘scriptData’,{‘folederid’:folderId});
}
});

如有多个数据可以用’,'分隔开来。

3、然后在可以在接收端利用$_GET['folderid']获取数据了。

三、其他注意的地方:

1、提示错误”Security Error” #2049的原因是:
(1)可能是apache配置问题,获取不到crossdomain.xml。
(2)当script参数中含有中文时也会有前面的提示,后来同事发现是只要有“%”符号就不行。
解决办法:将中文部分双重编码即可解决该问题。
如:var strUrl = encodeURI(encodeURI(“中文测试”));

2、IE下没有显示,果然是没有安装flash,好像这个要求9.0以上版本的flash。折腾好久……如果引用的文件都能访问,而不显示按钮,可能是没有安装flash,使用该插件要求9.0以上版本的flash。

3、遇到问题先分别访问crossdomain.xml、uploadify.swf、及其他引入的js文件。确保这些文件都能被访问到,且位置没有放错。

如遇404错误 可以先看看是不是接收文件的控制器的地址没有写对……

posted @ 2013-03-12 15:37  snowhumen  阅读(501)  评论(0编辑  收藏  举报