Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.03.2010, 03:27
Beckie вне форума Посмотреть профиль Отправить личное сообщение для Beckie Найти все сообщения от Beckie
  № 1  
Ответить с цитированием
Beckie

Регистрация: Dec 2009
Сообщений: 5
По умолчанию IO error при загрузке фоток

Собственно проблема следующая.

Если загружаю маленькие фотографии(до 100кб), то загружаются без проблем, если больше 100кб, то уже не грузит и почти под конец загрузки в actionscripted срабатывает
Код AS1/AS2:
fileListener.onIOError = function(file:FileReference):Void
{
	getURL("javascript:io_error();");
}
У меня uploading канал 40kb/sec. На локальном сервере грузятся фотки любого размера.

У друга uploading канал 8mbit/sec, грузятся фотки нормально, даже 3.2mb фотки без IOerror.

Смотрел за процессом загрузки через debuggin proxy прогу, она показывает в момент IOerror, что статус Completed, а Request Header не прилетел вообще.

Но самый прикол в том, что если я ограничиваю свой интернет через Netlimiter до 20kb/sec, то фотки грузятся нормально.


Вот код actionscript:
Код AS1/AS2:
System.security.allowDomain("http://" + _root.tdomain + "/");
import flash.net.FileReferenceList;
import flash.net.FileReference;
import flash.external.ExternalInterface;
import flash.external.*;
 
/* Main variables */
var session_photos = _root.ph;
var how_much_you_can_upload = 0;
 
var selected_photos; // container for selected photos
var inside_photo_num = 0; // for photo in_array selection
var created_elements = _root.ph;
var for_js_num = _root.ph;
 
 
 
 
/* Functions & settings for javascript<->flash conversation */
var methodName:String = "addtoflash";
var instance:Object = null;
var method:Function = addnewphotonumber;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
function addnewphotonumber() {
	session_photos--;
	created_elements--;
	for_js_num--;
}
 
/* Javascript hide and show flash button functions */
function block(){getURL("javascript: blocking();");}
function unblock(){getURL("javascript:unblocking();");}
 
/* Creating HTML platform function */
var result = false;
 
 
 
 
/* Uploading */
function uploadthis(photos:Array) {
 
	if(!photos[inside_photo_num].upload("http://" + _root.tdomain + "/upload.php?PHPSESSID=" + _root.phpsessionid)) 
	{
		getURL("javascript:error_uploading();");
	}
}
 
 
 
 
/* Flash button(applet) options and bindings */
var fileTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg)";
imageTypes.extension = "*.jpg;";
fileTypes.push(imageTypes);
 
var fileListener:Object = new Object();
var btnListener:Object = new Object();
btnListener.click = function(eventObj:Object)
{
	var fileRef:FileReferenceList = new FileReferenceList();
	fileRef.addListener(fileListener);
	fileRef.browse(fileTypes);
}
uploadButton.addEventListener("click", btnListener);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* Listeners */
fileListener.onSelect = function(fileRefList:FileReferenceList):Void
	{
		// reseting values
		inside_photo_num = 0;
 
		var list:Array = fileRefList.fileList;
		var item:FileReference;
 
		// PHP photo counter
		how_much_you_can_upload = 3 - session_photos;
 
		if(list.length > how_much_you_can_upload)
		{
			getURL("javascript:howmuch=" + how_much_you_can_upload + ";list_length=" + list.length + ";limit_reached();");
			return;
		}
 
		// if session variable isn't yet refreshed, we check inner counter
		if(created_elements >= 3)
		{
			getURL("javascript:limit_reached();");
			return;
		}
 
	selected_photos = list;
 
	for(var i:Number = 0; i < list.length; i++)
		{
			how_much_you_can_upload--;
			item = list[i];
			trace("name: " + item.name);
			trace(item.addListener(this));
			if((item.size / 1024) > 5000) {getURL("javascript:size_limit_reached();");return;}			
		}
 
		result = false;
		setTimeout(block,500);
 
		/* Increment number for new HTML container and pass it to javascript, after javascript returns true and we start uploading */
		for_js_num++;
		if(ExternalInterface.call("create_platform",for_js_num))
		{
			uploadthis(selected_photos);
		}
 
 
 
 
	}
 
 
fileListener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void
{
	getURL("javascript:files_process(" + bytesLoaded + "," + bytesTotal + "," + for_js_num + ");");
}
 
fileListener.onComplete = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void
{
	inside_photo_num++;
 
	var sendvar_lv:LoadVars = new LoadVars();
	var loadvar_lv:LoadVars = new LoadVars();
	loadvar_lv.onLoad = function(success:Boolean){
 
		if(loadvar_lv.failed == 1) {
		getURL("javascript:type_failed();");
		return;
		}
 
		getURL("javascript:filelinks='" + loadvar_lv.json + "';fullname='" + loadvar_lv.fullname + "';completed(" + for_js_num + ");");
 
		created_elements++;
 
		if((inside_photo_num + 1) > selected_photos.length) {setTimeout(unblock,1000);return;} // don't create empty containers anymore		
		if(created_elements >= 3) {return;}
 
		result = false;
 
		/* Increment number for new HTML container and pass it to javascript, after javascript returns true and we start uploading */
		for_js_num++;
		if(ExternalInterface.call("create_platform",for_js_num))
		{
			uploadthis(selected_photos);
		}
	}
	sendvar_lv.getnum = true;
	sendvar_lv.PHPSESSID = _root.phpsessionid;
	sendvar_lv.sendAndLoad("http://" + _root.tdomain + "/upload.php",loadvar_lv,"POST");    
 
}
 
 
 
 
 
 
 
 
fileListener.onCancel = function(file:FileReference):Void
{
}
 
fileListener.onOpen = function(file:FileReference):Void
{
}
 
fileListener.onHTTPError = function(file:FileReference, httpError:Number):Void
{
	getURL("javascript:http_error(" + httpError + ");");
}
 
fileListener.onSecurityError = function(file:FileReference, errorString:String):Void
{
	getURL("javascript:security_error(" + errorString + ");");
}
 
fileListener.onIOError = function(file:FileReference):Void
{
	getURL("javascript:io_error();");
 
}
Код AS1/AS2:
			<OBJECT classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0" width="100" height="22" id="fileref" align="middle">
				<PARAM name="allowScriptAccess" value="always">
				<PARAM name="swliveconnect" value="true">
				<PARAM name="movie" value="http://www.hosthere.com/fileref.swf?ph=-1&phpsessionid=8mirsjsd75v6vk583vkus50qbb2djsp6&tdomain=www.hosthere.com">
				<PARAM name="wmode" value="opaque">
				<PARAM name="quality" value="high">
				<PARAM name="bgcolor" value="#ffffff">
				<EMBED swliveconnect="true" wmode="opaque" src="http://www.hosthere.com/fileref.swf?ph=-1&phpsessionid=8mirsjsd75v6vk583vkus50qbb2djsp6&tdomain=www.hosthere.com" quality="high" bgcolor="#ffffff" width="100" height="22" name="fileref" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></EMBED>
			</OBJECT>



Вот что удалось нарыть, это успешный вариант загрузки маленькой фотки через тот proxy debugger:

http://i192.photobucket.com/albums/z228/Somebi/wtf1.gif
http://i192.photobucket.com/albums/z228/Somebi/wtf2.gif
http://i192.photobucket.com/albums/z228/Somebi/wtf3.gif

Шапка 200 прилетает, все ок, загрузка успешная, ссылка вернулась, картинка загрузилась.



Грузим 3.2mb фотку:

http://i192.photobucket.com/albums/z...bi/un-wtf1.gif
http://i192.photobucket.com/albums/z...bi/un-wtf2.gif

Вкладка ответа пустая, ответ не прилетел, естественно шапка тоже.

Вот что удалось залогить в upload.php:


PHP код:
$_SERVER['CONTENT_LENGTH'] -> 54

$_FILES
['Filedata']:

FILE name: [name] [8Undefined indexFiledata
FILE type
: [type] [8Undefined indexFiledata
FILE tmp_name
: [tmp_name] [8Undefined indexFiledata
FILE error
: [error] [8Undefined indexFiledata 
Других ошибок не залогилось.

Что это за мистика такая и как с ней бороться?

Старый 02.03.2010, 03:37
zurkis вне форума Посмотреть профиль Отправить личное сообщение для zurkis Найти все сообщения от zurkis
  № 2  
Ответить с цитированием
zurkis
 
Аватар для zurkis

Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
можно попробовать проверить права доступа на папку в которую фотки загружаются
__________________
Пока я жив, Вы горем обеспечены

Старый 02.03.2010, 04:57
Beckie вне форума Посмотреть профиль Отправить личное сообщение для Beckie Найти все сообщения от Beckie
  № 3  
Ответить с цитированием
Beckie

Регистрация: Dec 2009
Сообщений: 5
Дык фотографии загружаются раз через раз, если было бы дело в этом, тогда бы вообще не загружались бы.

Не?

Добавлено через 8 часов 40 минут
Неужели никто не встречался с подобной проблемой?

Хоть какие-нибудь способы решения этой проблемы.

Могу описать, как работает скрипт досконально, поэтапно.

Но проблему надо решить в любом случае.

Кстати чем можно посмотреть весь процесс загрузки фотографии на сервер?

А то в этом web proxy debugger маловато информации.

Меня кстати очень сильно смущает тот факт, что ответа от сервера не поступает. Что тогда выступает в роли триггера за статус Completed?

Добавлено через 8 часов 42 минуты
Может стоит переписать скрипт на AS3, но вот как именно я не знаю.

Еще вариант перейти на flex?

Добавлено через 9 часов 54 минуты
Кстати, как поменять Request Headers в Actionscript?

Добавлено через 10 часов 10 минут
POST http://www.hosthere.com/upload.php?P...rd54icbivuh5h2 HTTP/1.1
Accept: text/*
Content-Type: multipart/form-data; boundary=----------KM7cH2Ij5Ij5Ef1gL6GI3GI3Ij5KM7
User-Agent: Shockwave Flash
Host: www.hosthere.com
Content-Length: 3290117
Connection: Keep-Alive
Pragma: no-cache

------------KM7cH2Ij5Ij5Ef1gL6GI3GI3Ij5KM7
Content-Disposition: form-data; name="Filename"

PICT5308.JPG
------------KM7cH2Ij5Ij5Ef1gL6GI3GI3Ij5KM7
Content-Disposition: form-data; name="Filedata"; filename="PICT5308.JPG"
Content-Type: application/octet-stream

Добавлено через 10 часов 45 минут
Иногда сразу, а иногда через 2 минуты получаю таки овтет от сервера в виде Header 504.

Добавлено через 12 часов 2 минуты
Странно, но через локальный проки фотки грузятся на ура, только вырубаю проксик, сразу не грузятся.

Добавлено через 38 часов 19 минут
Мне тут сказали, что это может быть из-за буффера. Мол у кого большая скорость uploading, то флеш прямиком без буффера грузит на сервер, а если маленькая, то грузит в буффер. Вот в буффере и происходит ошибка.

Может кто-то поподробнее об этом написать?

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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