使用动态生成的图像的Actionscript [错误#2036:加载从未完成]

时间:2009-06-23 17:46:18

标签: php flash actionscript-3 zend-framework image

我正在使用图像缓存系统,该系统根据网址路线生成不同的图像。源图像位于文档根目录之外,缓存版本将添加到webroot中的/ cache中。简而言之,在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));

有关如何解决此问题的任何想法?这些错误似乎“困扰”了flash应用程序。


如果有帮助,这是响应标题:

请求生成图片:

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 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,要阻止出现你想要捕获的错误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中无法完成加载,因此不会触发加载完成事件。

希望这会有所帮助,(即使它是用不同的语言)

答案 1 :(得分:2)

似乎是Flash IDE问题。不是真的可以解决。