EAFlashUpload с ASP.NET 4.0 терпит неудачу в Firefox, Chrome, но работает в IE - PullRequest
0 голосов
/ 29 августа 2011

Я использую компонент EAFlashUpload с ASP.NET 4.0 на своем сайте, чтобы разрешить загрузку нескольких файлов (выбрать несколько файлов одновременно).

Компонент отлично работает и без проблем с IE (7, 8, 9), но с Firefox или Chrome выдает «неизвестную ошибку http» после загрузки файла (думаю, когда он пытается выполнить обратную передачу на сервер).

Явыполнение этого под IIS7 на Windows 2008 Server R2, но я не думаю, что версия 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, но это требует дополнительного расследования ...

Ответы [ 2 ]

0 голосов
/ 11 июля 2013

Я нашел этот ответ, когда у меня возникли аналогичные проблемы с загрузчиком флэш-памяти (загрузка не удалась бы даже до подключения к серверу).Используя следующий пример кода:

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

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

Оказывается, проблема возникла только с URL-адресами, в которых были & и / или # (объект флэш-памяти былполучать их и не зная, что с ними делать, потому что они не были закодированы). Существует больше символов, чем эти, о которых нужно беспокоиться, однако в моем случае это в конечном итоге решило проблему

Я просто заменил амперсанды кодированной версией, которую ожидала вспышка, и удалилхэш-фунт и все, что следует за ним (потому что это бесполезно с точки зрения сервера).

uploadUrl = uploadUrl.replace(/\&/g, '%26');
uploadUrl = uploadUrl.replace(/#.*/g, '');
0 голосов
/ 29 августа 2011

Я нашел ответ, и это абсолютно НЕ то, что я ожидал.

Эта строка кода была проблемой:

var uploadUrl = "Pages/SendAdvanced.aspx"; 

Эта строка является относительным путем, установленным вJavascript на стороне клиента и используется компонентом Flash, чтобы знать, где размещать контент.

Когда я изменил его на это, это сработало:

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

Что бы я хотел, чтобы кто-то рассказалмне почему первая строка кода когда-либо работает?Почему это работает в Internet Explorer?Есть ли что-то особенное, что он может сделать для отслеживания относительных путей, что не подойдут другим браузерам (и Mac)?

...