SWFUpload可以在IE中使用,但不能在Firefox中使用

SWFUpload可以在IE中使用,但不能在Firefox中使用,firefox,swfupload,asyncfileupload,file-upload,Firefox,Swfupload,Asyncfileupload,File Upload,使用SWFUpload v2.2、Firefox 3、IE 8、Flash 10 在我的ASP.NET应用程序中,所有上载都由upload.aspx处理(我在设置对象中设置了正确的上载url)。在IE 8中,上传会点击upload.aspx页面并进行处理,但在Firefox中不会。有什么建议吗 此处显示了用户访问以上载文件的页面的大部分代码(注意:正在使用母版页): var-swfu; window.onload=函数(){ swfu=新SWFUpload({ //后端设置 上传url:“..

使用SWFUpload v2.2、Firefox 3、IE 8、Flash 10 在我的ASP.NET应用程序中,所有上载都由upload.aspx处理(我在设置对象中设置了正确的上载url)。在IE 8中,上传会点击upload.aspx页面并进行处理,但在Firefox中不会。有什么建议吗

此处显示了用户访问以上载文件的页面的大部分代码(注意:正在使用母版页):


var-swfu;
window.onload=函数(){
swfu=新SWFUpload({
//后端设置
上传url:“../upload.aspx”,
后参数:{
“ASPSESSID”:”
},
//文件上载设置
文件大小限制:“10MB”,
文件类型:“***”,
文件类型描述:“所有文件”,
文件上传限制:1,
文件队列限制:1,
//假设成功超时:60,
//事件处理程序设置-这些函数在Handlers.js中定义
//处理程序不是SWFUpload的一部分,而是我的网站的一部分,并控制如何使用它
//我的网站对SWFUpload事件做出反应。
文件队列错误处理程序:fileQueueError,
文件对话框完成处理程序:文件对话框完成,
上传进度处理程序:上传进度,
上载错误\u处理程序:上载错误,
上载成功\u处理程序:上载成功,
上载完成\u处理程序:上载完成,
//按钮设置
按钮图片url:“../Images/XPButtonNoText\u 160x22.png”,
按钮\u占位符\u id:“spanButtonPlaceholder”,
按钮宽度:160,
按钮高度:22,
按钮文本:“上传文件(最大10 MB)”,
按钮文字样式:'.按钮{字体系列:Helvetica,Arial,无衬线;字体大小:14pt;}.按钮小{字体大小:10pt;}',
按钮\文本\顶部\填充:1,
按钮\文本\左\填充:5,
//闪光设置
flash_url:“../swfupload/swfupload.swf”,//相对于此文件
自定义\u设置:{
上载\u目标:“divFileProgressContainer”
},
//调试设置
调试:false
});
}

使用HTTP跟踪/调试代理查看是否有任何内容实际发送到服务器,以及接收到的响应(如果有)。Charles是我的最爱,它与Flash(以及其他HTTP)配合得非常好。WireShark和Fiddler是其他选项

查尔斯

钢丝鲨

小提琴手

我知道,这是一篇老文章,但也许它能帮助一些人解决这个问题,因为我今天也遇到了同样的问题

我不是通过使用post数组解决了这个问题,因为我不知道如何调试这个脚本,也不知道在哪里调试这个脚本,而是通过生成查询字符串解决了这个问题

<script type="text/javascript">
    var swfu;
    window.onload = function() {
        swfu = new SWFUpload({
            // Backend Settings
            upload_url: "../upload.aspx",
            post_params: {
                SessionID: "<%=Session.SessionID %>",
                OtherID: "<%=OtherID %>"
            },

            //And here comes the highlight

            use_query_string : true,

            //code ...

var-swfu;
window.onload=函数(){
swfu=新SWFUpload({
//后端设置
上传url:“../upload.aspx”,
后参数:{
会话ID:“”,
OtherID:“
},
//这里是最精彩的部分
使用\u查询\u字符串:true,
//代码。。。
在此之后,您将得到如下查询字符串:
?SessionID=(id)&OtherID=(OtherID)


这在每个浏览器下都能保证正常工作。

听起来你可能会遇到。Nort的解决方案是大多数人一直在解决这个问题的方法。但是,根据你的语言/框架,你可能需要添加一些额外的服务器端代码,从url中获取会话变量,并强制将其用作当前se是的

您可以在中尝试解决方案,或尝试在谷歌上搜索类似“”的内容。

饼干问题

在Windows上,无论使用何种浏览器,非IE Flash Player插件(FireFox、Opera、Safari等)都会发送IE cookie。这会中断许多服务器端脚本技术的身份验证和会话

如果开发者希望使用会话,他们应该手动传递会话和身份验证cookie信息,并在服务器端手动恢复会话

SWFUpload包包含PHP和ASP.Net的变通示例代码

====从那里实施一些一次性身份验证票据将使事情顺利进行

您还可以设置仅当用户使用上载时才应用此身份验证的条件


但是,一些测试以确保身份验证cookie不会绕过站点的其他部分可能很重要,这取决于您如何为此操作发布cookie。

也可以在其他浏览器中尝试,例如Safari或Chrome

如果它只在IE中起作用,那么可能是其他答案提到的Flash Cookie Bug

如果它在除Firefox之外的所有应用程序中都能工作,那可能是因为没有为进度条定义css。我不知道为什么这会导致问题,但我发现确实如此。当我将示例样式放入css文件后,它就开始在Firefox中工作

我使用的css如下所示:

DIV.ProgressBar { width: 100px; padding: 0; border: 1px solid black; margin-right: 1em; height:.75em; margin-left:1em; display:-moz-inline-stack; display:inline-block; zoom:1; *display:inline; }
DIV.ProgressBar DIV { background-color: Green; font-size: 1pt; height:100%; float:left; }
SPAN.asyncUploader OBJECT { position: relative; top: 5px; left: 10px; }

只是想通过向SWFUpload init添加
post_params
变量来确认相同的问题已经解决

post_params : {
    PHPSESSID : '<?=session_id()?>'
},
post_参数:{
PHPSESSID:'
},

我终于找到了答案……我为此挣扎了很长时间。真不敢相信这就是答案。原因是SUBST


我有一台装有SSD驱动器的电脑,因为它只有256GB,所以我决定不分区。不过我喜欢在C分区和D分区之间进行分割,我通过subst命令在我的SSD驱动器上模拟了它。如果我从用subst命令创建的驱动器中拾取文件,swf上传就不起作用。我几乎不敢相信,但这是事实lly今天发现无法仅在我的开发计算机上上载文件。

Charles是一个很好的建议!使用Charles,我能够确认没有
post_params : {
    PHPSESSID : '<?=session_id()?>'
},