Firefox 3.6 вылетает при попытке отобразить миниатюру - PullRequest
3 голосов
/ 12 июля 2010

Я использую Uploadify для загрузки нескольких изображений на сервер.

Я хочу отобразить миниатюры изображений до . Изображения фактически загружаются на сервер, основываясь на this . Я использую Firefox 3.6.6.

Вот как я думал сделать это:

$('#fileInput').uploadify({
    ...
    onSelect: function(event, queueID, fileObj) {
        var img = document.createElement("img");  
        img.classList.add("obj");  
        img.file = file;  
        document.getElementById("ThumbnailsArea").appendChild(img);  
        var reader = new FileReader();  
        reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img);  
        reader.readAsDataURL(fileObj); // This crashes Firefox  
        return true;
    }
    ...
});

Причина сбоя, я полагаю, заключается в том, что fileObj на самом деле не file, как здесь .

Кто-нибудь знает, как получить реальное file при использовании Uploadify ?

Мне действительно нужен любой совет, потому что я полностью застрял с этим!

Большое спасибо, хорошие люди.

1 Ответ

0 голосов
/ 15 июля 2010

Ваш вопрос был очень интересным, поэтому я поигрался с предоставленным вами кодом, но я боюсь, что то, что вы пытаетесь сделать, невозможно.

Первое, что я обнаружил, это то, что вы правы в том, что fileObj отличается от файла, который поступает из компонента входного файла в событии onchange, и это наиболее вероятная причина сбоя. Пока я играл с вашим кодом, я пытался эмулировать свойства file с простым javascript-объектом, но это тоже не работает (FF падает таким же образом).

Во-вторых, uploadify использует flash (сценарий действия) для фактической загрузки файлов. Вы можете заметить сходство событий между событиями uploadify и событиями класса Filereference . Таким образом, этот ввод файла, который вы имеете в начале, вообще не используется во время процесса загрузки файла (мне кажется, что он используется только для того, чтобы определить, куда поместить Flash-объект, используемый для загрузки). Это можно проверить, проверив свойство files в объекте входного файла, например, при событии onselect для uploadify или событии onopen (в обоих случаях файлы представляют собой массив размером 0).

Надеюсь, это поможет!

...