uploadify 3选择不在ie9中工作的文件

时间:2011-11-07 00:26:55

标签: jquery asp.net flash asp.net-mvc-3 uploadify

我创建了一个带有上传器的页面。作为上传者我使用Uploadify 3.代码适用于除IE9之外的所有浏览器。当我在compat模式下打开IE 9时,它正在工作。在IE9中,我无法按下上传按钮。它显示,但没有对点击的反应。因此,不会打开文件选择对话框。在Opera,chrome和FF中按钮工作,当我点击文件打开对话框时显示。

Flash正在IE9中运行。 (版本11,0,1,152)(youtube正在运行)

当我右键单击按钮时,我没有获得闪光灯信息。当我在所有其他浏览器中执行此操作时,我会获得Flash信息。当我右键单击youtube(在ie9中)时,我也会获得flash信息....?

这是我的uploadify jquery代码:

 $(document).ready(function() { 
    $('#fileInput').uploadify({ 
        'swf': '/Content/Scripts/uploadify3/uploadify.swf', 
        'uploader': '/nl-nl/Attachment/Upload', 
        'cancelImage': '/Content/Scripts/uploadify3/uploadify-cancel.png', 
        'checkExisting': '/nl-nl/Attachment/Check', 
        'multi': true, 
        'buttonText': 'Upload', 
        'postData' :{'RelationId' : '@cookie'}, 
        'sizeLimit': 2147483647, 
        'auto': true, 

        onError: function(a, b, c, d) { 
            if (d.status == 404) 
                alert("Could not find upload script. Use a path relative to: " + "<?= getcwd() ?>"); 
            else if (d.type === "HTTP") 
                alert("error " + d.type + ": " + d.status); 
            else if (d.type === "File Size") 
                alert(c.name + " " + d.type + " Limit: " + Math.round(d.sizeLimit / 1024) + "KB"); 
            else 
                alert("error " + d.type + ": " + d.text); 
        }, 
        onUploadComplete: function() { 
            $("#Grid").data('tGrid').ajaxRequest(); 

        } 
    }); 
});

我犯了错误吗?这是一个flash bug吗?或其他什么?

2 个答案:

答案 0 :(得分:4)

当您使用整个路径替换下载swf时,它可以正常工作

http://www.uploadify.com/uploadify/uploadify.swf

这不是优雅的解决方案,但它确实有效。 我只在localhost中遇到此问题。

现在选择按钮在IE中运行完美,但我们遇到了安全错误。 要解决此问题,您需要在根目录中添加crossdomain.xml文件。

所有域的示例crossdomain.xml(仅用于测试)

<?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>

或尝试在Global.asax文件中添加行 在RegisterRoutes方法中添加这一行

  routes.IgnoreRoute("crossdomain.xml");

答案 1 :(得分:2)

不知道真正的问题,但对于有此问题的其他人。它在部署后工作,而不是在调试器模式下。