从本地HTML文件(在应用程序工作区中)访问本地图像(不在应用程序工作区中)的问题

时间:2011-03-12 10:45:48

标签: javascript html flex air adobe

我有一个HTML框并从项目中加载本地html文件。 在这个HTML文件中,我使用jquery,我想从我的用户目录加载一个图像。 我看到我的用户目录中的图像,但jquery不起作用。 我收到这个错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at crop/onLoaded()[/Flex Bundle/workspace/crop/src/crop.mxml:119]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.html::HTMLLoader/onCompleteTimer()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()

但是,如果我从应用工作区加载图像,一切正常(我看到图像和Jquery工作)。

这是政策问题吗?错误说这是一个“空对象引用”问题,但这不可能是真的......

有什么想法吗?

达米安

2 个答案:

答案 0 :(得分:0)

如果将图像放在另一个目录中,是否有帮助?

您可以将图像文件放在My Documents / myairapp或/ home / user / Documents / myairapp中,然后打开它:

var original = air.File.documentsDirectory.resolvePath("myairapp/test.jpg");

根据文件所在的目录,您可能会遇到权限问题吗?

答案 1 :(得分:0)

我将文件从应用程序目录复制到自定义目录的解决方案:

瓦尔:

private var fileName:String = 'config.xml';
private var workingDirectory:String = 'MyNewAppDir';
  1. 简短而简单:
  2. var f:File = File.applicationDirectory.resolvePath(this.fileName );
    f.copyTo( File.documentsDirectory.resolvePath(this.workingDirectory+"/"+this.fileName));
    

    或2.漫长而复杂:

    /**
     * read content
     */
    var file:File = File.applicationDirectory.resolvePath( this.fileName );
    var read:FileStream = new FileStream();
    read.open(file, FileMode.READ);
    var content:String = read.readMultiByte( read.bytesAvailable, "utf-8") ;
    read.close();
    
    /**
     * save content
     */
    var write:FileStream = new FileStream();
    write.open( File.documentsDirectory.resolvePath( this.workingDirectory + "/" + this.fileName ), FileMode.WRITE );
    write.writeMultiByte( content, "utf-8" );
    write.close();