日期:2014-05-17  浏览次数:20671 次

Flash编写的文件上传在火狐下报IO错误
RT

在IE下可以用,在其他浏览器下就是提交不了。

查了很多资料,说Flash通过FileReference上传文件时,始终会取IE的cookie还是sessionid,导致服务端认为不是同一个连接,所以上传地址找不到。

有人知道解决办法吗?最好是C#版的解决方法。

有效办法加分到100
Flash?上传文件

------解决方案--------------------
是存在这个问题

用plupload,这个也是flash,不存在这样问题。
------解决方案--------------------
有2个插件曾经研究过.
一个是Uploadify一个是SWFUpload.  Flash有一个共同的弊端就是所谓的Session丢失 
其实不是丢失了 只是产生了不同的Seesion  那么你要做的时候 记录客户端Session值 
上传的时候利用Url传参或者其他方式 将这个Seesion一起传递到服务器 验证是否一致。

参考代码. 注意看其中的一个参数ScriptData

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="/Uploadify/uploadify.css" rel="stylesheet" type="text/css" />

    <script src="/Uploadify/jquery-1.4.2.min.js" type="text/javascript"></script>

    <script src="/Uploadify/jquery.uploadify.v2.1.4.min.js" type="text/javascript"></script>

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

    <script type="text/javascript">
        var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";
        var ASPSESSID = "<%= Session.SessionID %>";
        alert(ASPSESSID);
        
        $(document).ready(function () {
                $('#uploadify').uploadify({
                    'uploader': '/uploadify/uploadify.swf',
                    'script': '/Uploadify.ashx',
                    'cancelImg': '/uploadify/cancel.png',
                    'folder': '/uploads',
                    'auto': false,
                    'buttonText': '', 
                    'but