Internet Explorer“安全错误”uploadify

时间:2011-07-27 18:11:50

标签: jquery flash security uploadify

我正在使用uploadify 2.1.4,http://www.uploadify.com

local js:

jQuery('#file_upload').uploadify({
   'buttonImg' : 'public/uploadify/newfile.png',
   'uploader' : 'http://remoteserver/uploadify.swf',
   'scriptAccess' : 'always', ...

在远程服务器中我有这个跨域:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

我编辑uploadify.fla并输入以下代码:

import flash.system.Security;
...
Security.allowDomain("*");

然后生成一个新的uploadify.swf

问题是: 使用Firefox,Safari,Chrome e Opera,但在IE(v7,v8,v9(我不用v6测试))仍然收到错误:安全错误(在.uploadifyQueueItem中)

4 个答案:

答案 0 :(得分:0)

我不确定为什么你可以使用jquery上传到服务器,直到你可以直接从闪存(因为你已经使用闪存)。这是我如何做到这一点,我在IE中没有问题。对不起,我无法直接回答你的问题,我不太了解JQuery。

 var request:URLRequest = new URLRequest( "http://remoteserver/uploadify.swf" );
 request.data = myjpeg;
 request.contentType = "image/jpeg";
 request.method = URLRequestMethod.POST;
 var loader:URLLoader = new URLLoader(  );
 loader.addEventListener( Event.COMPLETE, handleResponse );
 loader.load( request );
 function handleResponse (evt:Event) { 
 trace(evt.target.data); //print response from server if there is one
 }

答案 1 :(得分:0)

我解决了这个问题:

在我的js中:

jQuery('#file_upload').uploadify({
  script: '/upload',
  uploader: 'http://domain.com/uploadify.swf'

但是,当在uploadify.swf中打印(requestURL.url)时,放置:“http://www.domain.com/upload”;因此,闪存导致安全错误,因为“http://www.dom ...”!=“http:// dom ...”

答案 2 :(得分:0)

我没有按照如何在将文件从一台服务器上传到另一台服务器时修复IE安全问题。

我的uploadify.swf托管在服务器1上,上传php脚本在服务器2上。 服务器2上的Crossdomain.xml具有允许上载的指令。

在FF,Chrome,Safari中运行良好,但IE会引发安全阻止。

由于 Melwyn

答案 3 :(得分:0)

嗨,我从另一个问题得到解决方案。 dynamically setting properties in uploadify

添加以下属性以避免IE8中的安全性异常

  'method' : 'GET',

现在正在为我工​​作。我的总代码如下所示

$('#file_uploads').uploadify({
        'onUploadSuccess': function (file, data, response) {
            $scope.uploadedFileList.push(JSON.parse(data)[0].files);
            $scope.$apply();
        },
        'onQueueComplete': function (queueData) {

        },
        'onDialogClose': function (queueData) {
            //            console.log(queueData);
            if (queueData.filesSelected > 5 || (queueData.filesSelected + $scope.uploadedFileList.length) > 5) {
                bootbox.alert({
                    title: CommonUtility.errorLabel,
                    message: "Maximum 5 files allowed.",
                    callback: function () {

                    }
                });
                $('#file_uploads').data('uploadify').queueData = "";
            } else if (queueData.queueSize > 5000000) {
                bootbox.alert({
                    title: CommonUtility.errorLabel,
                    message: "Total file size should not exceed 5 MB",
                    callback: function () {

                    }
                });
            } else
                $('#file_uploads').uploadify('upload', '*');
        },
        'auto': false,
        'fileTypeExts': '*.gif; *.jpg; *.png; *.doc; *.pdf; *.xls; *.zip;',
        'scriptAccess': 'always',
        'swf': 'assets/css/uploadify.swf',
        'uploader': 'uploadfile',
        'method': 'GET',
        'buttonText': 'Browse',
    });