Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Прерывается загрузка файлов методом filereference.upload() (http://www.flasher.ru/forum/showthread.php?t=174280)

Sergey_S 21.01.2012 18:32

Прерывается загрузка файлов методом filereference.upload()
 
Здравствуйте. Уже как-то обращался за помощью на этот форум, мне помогли, очень благодарен, надеюсь, помогут ещё раз.
Пишу загрузчик фото на actionscript 3. Заметил, что при загрузке большого количества фотографий (больше сотни, при этом вес каждой составляет 3-4 Мб), загрузка останавливается, причём каждый раз в разном месте - на 38-й, 70-й фотографии или любой другой по счёту. Событие IOErrorEvent.IO_ERROR не срабатывает. Загрузчик был с ресайзом, решил его убрать (может в нём и сопутствующем коде дело) - проблема осталась.

Код AS3:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.external.ExternalInterface;
import mx.utils.UIDUtil;
 
private var fr:FileReferenceList = new FileReferenceList, i:Number, elem:Object = new Object, uploadURL:String, uniqId:String;
 
private function onClick():void {
        uploadURL = ExternalInterface.call("returnURL"); //получаю со страницы URL загрузки
        i = 0;
        fr.browse([new FileFilter("Фотографии jpg", "*.jpg; *.jpeg")]);
        fr.addEventListener(Event.SELECT, onSelect);
}
 
private function onSelect(e:Event):void {
        if (i < fr.fileList.length) {
                uniqId = UIDUtil.createUID() + ".jpg"; //уникальное имя для файла
                if (i == 0) {
                        fr.removeEventListener(Event.SELECT, onSelect);
                }
                elem = FileReference(fr.fileList[i]);
                elem.load();
                elem.addEventListener(Event.COMPLETE, loadBig);
        }
        if (i >= fr.fileList.length) {
 
        }
}
 
private function loadBig(e:Event):void {
        elem.removeEventListener(Event.COMPLETE,loadBig);
        elem.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onLoad);
        elem.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        elem.cancel();
        elem.upload(new URLRequest(uploadURL + "?fileName=" + uniqId));
}
 
private function ioErrorHandler(e:IOErrorEvent):void {
        //функция не выполняется, когда загрузка останавливается
        elem.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        myB.label = "ошибочка вышла";
}
 
private function onLoad(e:DataEvent):void {
        elem.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onLoad);
        i++;
        ExternalInterface.call("setProgress", i, fr.fileList.length); //на странице средствами jquery отслеживаю загрузку
        myP.setProgress(i, fr.fileList.length); //также отслеживаю загрузку при помощи ProgressBar
        onSelect(null);
}

Предположил, что дело в настройках php. Выставил max_execution_time = 3000 и memory_limit = 3280M (сервер - Denwer). Проблема осталась.
В чём может быть дело? Благодарен за любые предположения.

silin 21.01.2012 19:09

как-то немного скользко, правда, об этом в доках заявлено, может с этим связано
Цитата:

Although Flash Player has no restriction on the size of files you can upload or download, the player officially supports uploads or downloads of up to 100 MB.

Sergey_S 21.01.2012 20:58

Судя по всему, ограничение в 100 Мб распространяется на один файл. Т.е. можно загружать сколько угодно файлов, но размер каждого не должен превышать 100 Мб.

Нашёл на stackoverflow схожую с моей проблему, пишут, что можно попробовать использовать https протокол (правда в том вопросе URLLoader, а у меня загрузка через FileReference).


Часовой пояс GMT +4, время: 15:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.