从客户端读取xml文件

时间:2010-02-14 11:29:05

标签: xml flex actionscript-3

我正在尝试从客户端读取xml文件。 搜索后。我必须使用此代码将文件上传到服务器。

var imagesFilter:FileFilter = new FileFilter("*.jpg,*.gif,*.png", "*.jpg;*.gif;*.png;*.jpeg");
fileRef.browse([imagesFilter]);

但我想要做的是从客户端读取文件并解析它而不将其上传到服务器。 有谁能够帮我? 感谢

4 个答案:

答案 0 :(得分:1)

代码示例:

private function onCreationComplete():void {
            fileRef.addEventListener(Event.SELECT, selectHandler);
            fileRef.addEventListener(Event.COMPLETE, completeHandler);
            fileRef.addEventListener(flash.events.IOErrorEvent.IO_ERROR, onIoError);
            fileRef.addEventListener(flash.events.DataEvent.UPLOAD_COMPLETE_DATA, responseHandler);
        }

        private function selectHandler(event:Event):void {
           filename.text = fileRef.name;
        }


        private function selectFile():void {
            try
            {
                var success:Boolean = fileRef.browse();
            }
            catch (error:Error)
            {
                trace("Unable to browse for files.");
            }
        }

        private function onIoError(event:flash.events.IOErrorEvent):void{
            Alert.show(rm.getString('ui_res', 'file_uppload_fail'), rm.getString('ui_res', 'connection_error'));
            ModelLocator.getInstance().confManagerModel.isPending = false;
        }

        private function onUploadDataComplete(event:flash.events.DataEvent):void {
            trace("onUploadDataComplete");

        }

        private function responseHandler( event:DataEvent ) :void {
            var data:Object = JSON.decode(event.data as String);
            // do anything with data

        }

        private function uploadFile():void
        {
            if(!submit.enabled){
                return;
            }
            var request:URLRequest = new URLRequest("test")
            try
            {
                fileRef.upload(request);
                ModelLocator.getInstance().confManagerModel.isPending = true;
            }
            catch (error:Error)
            {
                Alert.show(rm.getString('ui_res', 'file_uppload_fail'), rm.getString('ui_res', 'error_on_server'));
            }
        }

        private function completeHandler(event:Event):void
        {

        }

答案 1 :(得分:1)

我写了一个简单的flex应用程序,它要求文件,加载它,并在textarea中显示文件的内容。使用flex 4 SDK编译。

<?xml version="1.0" encoding="utf-8"?>

             

        public function onInit():void {
            m_FileRef = new FileReference();
            m_FileRef.addEventListener(Event.SELECT, onBrowse);
            m_FileRef.browse();

        }

        public function onBrowse(e:Event):void {
            m_FileRef.addEventListener(Event.COMPLETE, onComplete);
            m_FileRef.load();
        }

        public function onComplete(e:Event):void {
            contentArea.text = m_FileRef.data.toString();
        }           
    ]]>
</mx:Script>
<mx:TextArea id="contentArea" width="100%" height="100%">

</mx:TextArea>

答案 2 :(得分:0)

您无法从用户计算机读取本地文件,因为Web应用程序的“沙盒”无法访问本地文件。然后你的上传文件到服务器Flash播放器使用标准浏览器API来做到这一点。哪些信息需要XML?

答案 3 :(得分:0)

您可以使用FileReference类中的方法“load”和属性“data”。我假设以下工作流程:

  1. 用户通过浏览对话框选择XML文件
  2. 您调用“加载”方法
  3. 加载完成后,使用“data”属性(它只是一个ByteArray)