welcome to xlongwei.com

欢迎大家一起学习、交流、分享


QQ:9167702333 邮箱:admin@xlongwei.com

uploadify文件上传跨域问题


分类 Java   关键字 分享   标签 web   jquery   发布 hongwei  1429783410640
注意 转载须保留原文链接,译文链接,作者译者等信息。  
uploadify支持文件异步上传,然而其跨域问题常常困扰着网站开发人员,常见使用情形如下:
  • 上传页面,uploadify.swf,UploadController,在同一个项目和域里,上传很顺畅
  • 上传页面+uploadify.swf在同一个项目里,UploadController独立出来成为上传服务器,这时需要crossdomain.xml允许跨域上传
  • 上传页面在项目里,uploadify.swf+UploadController在上传服务器端,甚至uploadify.swf在静态资源服务器端,这时就上传不了……

这时有一个折中的办法,给项目域配置一个proxy_pass可以上传成功,项目从自己所在的域app.domain.com获取uploadify.swf,实际上文件存在于static.domain.com服务器上,再配合crossdomain.xml就可以顺利上传了。
    //server app.domain.com
location /resources/ {
proxy_pass http://static.domain.com;
}

还可以在上传服务器放置上传页面upload.jsp,然后使用iframe引用此页面(可选弹窗),不过这种方式在表单上传时可能不太方便,<input form="formId">

其他方法待研究……

对于第三种情况:上传页面项目front,静态资源项目static,上传后台项目upload三方分离的情况,只需要uploadify.swf文件在front项目里面即可,而uploadify.css等可以在static项目,见代码示例
if(typeof(swf)=="undefined") swf = static_url+"/uploadify-3.2.1/uploadify.swf"; //灵活情况下可以指定swf地址,默认static地址(iframe)
swf="http://www.xlongwei.com/res/js/uploadify-3.2.1/uploadify.swf"; //简单情况下可以写死
var settings = {
swf : swf,
cancelImg : static_url+"/uploadify-3.2.1/uploadify-cancel.png",
buttonText : "选择文件...",
uploader : upload+"/upload/temp",
formData : {type : "image" },
fileObjName : "file",
fileTypeExts : "*.png;*.jpg;*.jpeg",
fileTypeDesc : "图片文件",
fileSizeLimit : 2048,
successTimeout : 90
};
var settings_multi = $.extend(settings, {
multi:true
});