![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Dec 2009
Сообщений: 5
|
Собственно проблема следующая.
Если загружаю маленькие фотографии(до 100кб), то загружаются без проблем, если больше 100кб, то уже не грузит и почти под конец загрузки в actionscripted срабатывает fileListener.onIOError = function(file:FileReference):Void { getURL("javascript:io_error();"); } У друга uploading канал 8mbit/sec, грузятся фотки нормально, даже 3.2mb фотки без IOerror. Смотрел за процессом загрузки через debuggin proxy прогу, она показывает в момент IOerror, что статус Completed, а Request Header не прилетел вообще. Но самый прикол в том, что если я ограничиваю свой интернет через Netlimiter до 20kb/sec, то фотки грузятся нормально. Вот код actionscript: 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();"); } <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:
Что это за мистика такая и как с ней бороться? |
|
|||||
|
Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
|
можно попробовать проверить права доступа на папку в которую фотки загружаются
__________________
Пока я жив, Вы горем обеспечены |
|
|||||
|
Регистрация: 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|