Actionscript [Ошибка № 2036: загрузка никогда не завершена] с динамически генерируемыми изображениями - PullRequest
6 голосов
/ 23 июня 2009

Я работаю с системой кэширования изображений, которая генерирует различные изображения на основе URL-маршрута. Исходные изображения находятся вне корневого каталога документа, а кэшированные версии добавляются в / cache в webroot. Короче говоря, во Flash, если я указываю Loader на маршрут, я получаю ошибку «Load Never Completed» в первый раз (если кэшированное изображение еще не было сгенерировано).

Error opening URL 'http://characters.dev/cache/Pledges/16107/48_48c/jen001.jpg'
Error #2036: Load Never Completed. URL: http://characters.dev/cache/Pledges/16107/48_48c/jen001.jpg

Кэшированное изображение все еще генерируется, и при следующем запуске приложения фактический файл загружается без ошибок. У меня есть правильные заголовки, отправляемые при создании исходного изображения и его записи, поэтому мне интересно, почему Flash не получает ответ (кажется, работает нормально в окне браузера).

header("Content-type:image/jpeg");
echo $this->getResponse()->setBody(file_get_contents($cachedFile));

Есть идеи как это исправить? Кажется, что ошибки "застряли" во флэш-приложении.


Если это поможет, вот заголовки ответа:

Запрос на создание изображения:

HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 17:52:49 GMT
Server: Apache
X-Powered-By: PHP/5.2.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=6b746d4ed010c288a824522597698ea2; expires=Fri, 24-Jul-2009 17:52:50 GMT; path=/; domain=.characters.dev
Content-Length: 3575
Content-Type: image/jpeg

Запрос при кэшировании изображения:

HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 17:53:27 GMT
Server: Apache
Last-Modified: Tue, 23 Jun 2009 17:52:50 GMT
ETag: "24e6c62-df7-a8bd0080"
Accept-Ranges: bytes
Content-Length: 3575
Content-Type: image/jpeg

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

Flash IDE проблема, кажется. Не совсем исправимо.

2 голосов
/ 24 июня 2009

У меня возникла похожая проблема, чтобы сообщение об ошибке появилось, что вы хотите перехватить IOErrorEvent.IO_Error

_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError_handler, false, 0, true);

public function ioError_handler(event:IOErrorEvent):void
{
   Alert.show(event.toString());
}

Хотя это и избавило от ошибки, некоторые изображения не загружались в Opera. В конце концов я заставил это работать, изменив код обработчика изображения (asp.net c #) на

context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.ContentType = "image/jpg";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();
context.Response.Cache.SetExpires(DateTime.MinValue);
context.Response.BufferOutput = false;
context.Response.BinaryWrite(photo);

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

Надеюсь, это поможет (даже если это на другом языке)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...