5

使用 SWFUpload v2.2、Firefox 3、IE 8、Flash 10 在我的 ASP.NET 应用程序中,所有上传都由 upload.aspx 处理(我在设置对象中设置了正确的 upload_url)。在 IE 8 中,上传会到达 upload.aspx 页面并被处理,但在 Firefox 中它们不会。有什么建议么?

用户为上传文件而访问的页面的大部分代码如下所示(注意:正在使用母版页):

<script type="text/javascript" src="../swfupload/swfupload.js"></script>

<script type="text/javascript" src="../js/handlers.js"></script>

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

            // File Upload Settings
            file_size_limit: "10 MB",
            file_types: "*.*",
            file_types_description: "All Files",
            file_upload_limit: 1,
            file_queue_limit: 1,
            //assume_success_timeout: 60,

            // Event Handler Settings - these functions as defined in Handlers.js
            //  The handlers are not part of SWFUpload but are part of my website and control how
            //  my website reacts to the SWFUpload events.
            file_queue_error_handler: fileQueueError,
            file_dialog_complete_handler: fileDialogComplete,
            upload_progress_handler: uploadProgress,
            upload_error_handler: uploadError,
            upload_success_handler: uploadSuccess,
            upload_complete_handler: uploadComplete,

            // Button settings
            button_image_url: "../Images/XPButtonNoText_160x22.png",
            button_placeholder_id: "spanButtonPlaceholder",
            button_width: 160,
            button_height: 22,
            button_text: '<span class="button">Upload File<span class="buttonSmall">(10 MB Max)</span></span>',
            button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt; } .buttonSmall { font-size: 10pt; }',
            button_text_top_padding: 1,
            button_text_left_padding: 5,

            // Flash Settings
            flash_url: "../swfupload/swfupload.swf", // Relative to this file

            custom_settings: {
                upload_target: "divFileProgressContainer"
            },

            // Debug Settings
            debug: false
        });
    }
</script>
4

7 回答 7

2

我知道,这是一个旧帖子,但也许它有助于解决某些人的问题,因为我今天遇到了同样的问题。

我不是通过使用 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 ...

在此之后,您将获得如下查询字符串:?SessionID=(id)&OtherID=(otherid)

这在每个浏览器下都有保证。

于 2010-06-04T10:46:27.553 回答
2

也可以在其他浏览器中尝试,例如 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; }
于 2011-09-09T14:18:32.197 回答
1

http://demo.swfupload.org/Documentation/

饼干问题

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

开发者如果希望使用 Sessions,应手动传递 Session 和 Authentication cookie 信息并在服务器端手动恢复 Sessions

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

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

您还可以有条件地仅在用户使用上传时应用此身份验证

但是,根据您为此操作发出 cookie 的方式,一些确保身份验证 cookie 不会绕过站点的其他部分的测试可能很重要。

于 2011-01-28T01:20:39.823 回答
1

只是想确认通过将post_params变量添加到 SWFUpload init 来解决相同的问题。

post_params : {
    PHPSESSID : '<?=session_id()?>'
},
于 2013-03-08T08:19:26.510 回答
1

使用 HTTP 跟踪/调试代理来查看是否真的有任何东西被发送到服务器,以及正在接收什么响应(如果有的话)。Charles 是我最喜欢的,它与 Flash(以及其他一切 HTTP)配合得很好。WireShark 和 Fiddler 是其他选择。

查尔斯 http://www.xk72.com/charles/

WireShark http://www.wireshark.org/

提琴手 http://www.fiddler2.com/fiddler2/

于 2010-02-10T02:53:08.217 回答
0

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

您可以尝试此 StackOverflow 问题中的解决方案,或尝试使用谷歌搜索“ flash upload cookie ”之类的内容。

于 2010-11-09T00:29:25.737 回答
0

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

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

于 2015-09-19T21:44:56.687 回答