2011-08-29 78 views
0

我在我的站點上使用EAFlashUpload組件與ASP.NET 4.0以允許多個文件上傳(一次選擇多個文件)。使用ASP.NET 4.0的EAFlashUpload在Firefox,Chrome中失敗,但在IE中工作

該組件工作良好,IE瀏覽器(7,8,9)沒有問題,但在Firefox或Chrome瀏覽器中,文件上傳後會出現「未知http錯誤」(當它嘗試回發到服務器,我認爲)。

我在Windows 2008 Server R2的IIS7下運行這個,但我不認爲IIS或Windows的版本是重要的因素。

這是客戶端的JavaScript處理組件:

<script type="text/javascript"> 
    var params = { BGcolor: "#ffffff", wmode: "window" }; 
    var attributes = { id: "EAFlashUpload", name: "EAFlashUpload" }; 
    var flashvars = new Object(); 
    var uploadUrl = "Pages/SendAdvanced.aspx"; 
    //if (!document.all) { 
    // uploadUrl = "../" + uploadUrl; 
    //} 
    flashvars["uploader.uploadUrl"] = uploadUrl; 
    flashvars["viewFile"] = "EAFUpload/TableView.swf"; 
    flashvars["view.removeButton.visible"] = "false"; 
    flashvars["view.clearButton.visible"] = "false"; 
    flashvars["queue.filesCountLimit"] = "10"; 
    flashvars["queue.fileSizeLimit"] = "2147483648";  // 2 gigabytes = 2147483648 bytes 
    swfobject.embedSWF("EAFUpload/EAFUpload.swf", "EAFlashUpload_holder", "650", "380", "10.0.0", "EAFUpload/expressInstall.swf", flashvars, params, attributes); 
    function EAFlashUpload_onMovieLoad(errors) { if (errors != "") alert(errors); } 
</script> 

編輯: 我發現後進一步測試Flash組件拋出錯誤#2038,這是一個普通的包羅萬象的錯誤「無法連接到服務器「。不知道爲什麼這是一個Chrome和FF的問題,但這保證了額外的調查...

回答

0

我找到了答案,而且這絕對不是我期待的。

這行代碼是問題:

var uploadUrl = "Pages/SendAdvanced.aspx"; 

這條線是相對路徑,在客戶端的JavaScript設置和使用的Flash組件知道在哪裏發佈的內容。

當我改成了這一點,它的工作:

var uploadUrl = "http://www.mysite.com/Pages/SendAdvanced.aspx"; 

我很想有人告訴我,就是爲什麼第一行代碼EVER作品?它爲什麼在Internet Explorer中起作用?其他瀏覽器(和Mac)不會做什麼,它能夠做些什麼來跟蹤相對路徑?

0

我發現這個答案時,我遇到類似的問題與Flash上​​傳(即使連接到服務器上傳失敗)。使用下面的示例代碼:

var uploadUrl = location.href; 
if (!document.all) { 
    uploadUrl = "../" + uploadUrl; 
} 
//alert(uploadUrl); 

var flashvars = new Object(); 
flashvars["uploader.uploadUrl"] = uploadUrl; 
... 

原來,問題只在他們有一個&和/或(flash對象正在接受這些,不知道該怎麼跟他們做網址時因爲他們沒有編碼)。 有更多的字符比這些擔心,但於我而言,這結束瞭解決問題

我簡單地更換與閃爍期待編碼版本的&符號,並刪除下面的哈希英鎊和一切它(因爲從服務器的角度來看它是無用的)。

uploadUrl = uploadUrl.replace(/\&/g, '%26'); 
uploadUrl = uploadUrl.replace(/#.*/g, ''); 
相關問題