无法在flex移动应用程序中从web下载图像

时间:2013-03-10 07:18:04

标签: flex4.6 flex-mobile flash-builder4.5

我想使用URL将图片从Mobile下载到Flex Mobile。我找到This并尝试了这个:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView">


<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
    <fx:Model id="fileRefModel">
        <file>
            <creationDate>{""}</creationDate>
            <creator>{""}</creator>
            <modificationDate>{""}</modificationDate>
            <name>{""}</name>
            <size>{""}</size>
            <type>{""}</type>
        </file>
    </fx:Model>
</fx:Declarations>
<fx:Script>
    <![CDATA[           
        import mx.collections.ArrayCollection;
        import flash.net.FileReference;

        [Bindable]
        private var arrColl:ArrayCollection;

        // URL of the file to download.
        private const FILE_URL:String = "http://www.thebiblescholar.com/android_awesome.jpg";

        private var fileRef:FileReference;
        private var urlReq:URLRequest;

        private function init():void {
            // Initialize the array collection to an empty collection.
            arrColl = new ArrayCollection();

            // Set up the URL request to download the file specified by the FILE_URL variable
            urlReq = new URLRequest(FILE_URL);

            // Define file reference object and add a bunch of event listeners.
            fileRef = new FileReference();
            fileRef.addEventListener(Event.CANCEL, doEvent);
            fileRef.addEventListener(Event.COMPLETE, doEvent);
            fileRef.addEventListener(Event.OPEN, doEvent);
            fileRef.addEventListener(Event.SELECT, doEvent);
            fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent);
            fileRef.addEventListener(IOErrorEvent.IO_ERROR, doEvent);
            fileRef.addEventListener(ProgressEvent.PROGRESS, doEvent);
            fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent);
        }

        private function doEvent(evt:Event):void {
            // Create shortcut to the FileReference object.
            var fr:FileReference = evt.currentTarget as FileReference;

            // Add event order and type to the DataGrid control.
            arrColl.addItem({data:arrColl.length+1, type:evt.type, eventString:evt.toString()});

            try {
                // Update the Model.
                fileRefModel.creationDate = fr.creationDate;
                fileRefModel.creator = fr.creator;
                fileRefModel.modificationDate = fr.modificationDate;
                fileRefModel.name = fr.name;
                fileRefModel.size = fr.size;
                fileRefModel.type = fr.type;
                // Display the Text control.
                //txt.visible = true;
            } catch (err:*) {
                // uh oh, an error of sorts.
            }
        }

        private function downloadSourceCodeZip():void {
            // Clear existing array collection.
            arrColl = new ArrayCollection();

            fileRef.download(urlReq); // Here it gives me Exception >> (Suspended: TypeError: Error #1009: Cannot access a property or method of a null object reference.)  

        }       


    ]]>
</fx:Script>    

<s:Button label="Download" click="downloadSourceCodeZip()"/>

 但是我得到Suspended: TypeError: Error #1009: Cannot access a property or method of a null object reference.如何让这段代码对我有用&gt;

1 个答案:

答案 0 :(得分:0)

看起来你的init()方法不会从任何地方调用,所以不会创建fileRef。

您需要将initialize="init()"添加到您的View标记。