Читать XML-файл из клиента - PullRequest
       13

Читать XML-файл из клиента

0 голосов
/ 14 февраля 2010

Я пытаюсь прочитать XML-файл с клиента. После поиска. Я должен загрузить файл на сервер с этим кодом.

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

Но я хочу прочитать файл с клиента и проанализировать его без загрузки на сервер. Кто-нибудь может мне помочь? Спасибо

Ответы [ 4 ]

1 голос
/ 18 февраля 2010

Я написал простое гибкое приложение, которое запрашивает файл, загружает его и показывает содержимое файла в 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>

1 голос
/ 16 февраля 2010

Пример кода:

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
        {

        }
0 голосов
/ 15 февраля 2010

Вы можете использовать метод «load» и свойство «data» из класса FileReference. Я предполагаю следующий рабочий процесс:

  1. пользователь выбирает файл XML через диалоговое окно просмотра
  2. Вы вызываете метод "load"
  3. Когда загрузка будет завершена, используйте свойство data (это просто ByteArray)
0 голосов
/ 15 февраля 2010

Вы не можете прочитать локальный файл с компьютера пользователя, потому что «песочница» веб-приложения не имеет доступа к локальным файлам. Затем ваш загружаемый файл на сервер Flash Player использует стандартный API браузера для этого. Какая информация содержит необходимый XML?

...