Показать сообщение отдельно
Старый 02.09.2013, 12:58
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию FileReference крашит плеер при попытке повторной загрузки файла

Код один в один взят из хэлпа.

1. Грузим картинку test.jpg. Она, естественно, грузится.
2. Не закрывая клиента, открываем ее редактором, меняем, например, размер холста и сохраняем под тем же именем test.jpg.
3. Пытаемся повторно загрузить картинку test.jpg - выполнение доходит до fileRef.load() и все с грохотом падает, что на сайте, что в локальном дебагплеере.

Как обработать ситуацию?

Кусок код загрузки, если кому лень лезть в хэлп:

Код AS3:
private function upload() : void 
{
	fileRef = new FileReference(); 
	fileRef.addEventListener(Event.SELECT, selectHandler); 
	fileRef.addEventListener(Event.COMPLETE, completeHandler); 
	fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteDataHandler);
	fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
 
	var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png"); 
	var allTypes:Array = new Array(imageTypes); 
 
	try 
	{ 
		var success:Boolean = fileRef.browse(allTypes); 
	} 
	catch (error:Error) 
	{ 
		trace("Unable to browse for files."); 
	} 
}
 
private function selectHandler(e:Event):void 
{ 
	trace("selectHandler: name=" + fileRef.name );
	fileRef.load();
}
Добавлено через 50 минут
В общем, проблема оказалась в том, что создавался экземпляр FileReference на каждую загрузку. Пока грузили файлы с разными именами - все было ок.

Сделал так, чтобы объект FileReference в приложении был в единственном экземпляре и и все заработало.