FLEX/AS3 How to open docx/odt file

时光总嘲笑我的痴心妄想 提交于 2019-12-25 17:18:19

问题


I have function that create docx or odt file. I need automaticly to open this file in microsoft/libre office, right after creation complete. How to coding this in flex/as3 ?

        protected function create003(docType:String, patientID:String):void
        {
            create003Result.token = nhealthReports.create003(docType, patientID);               
        }

         protected function  getFormModuleDataResult_resultHandler(event:ResultEvent):void
        {
            var pathToFile:String;
            pathToFile=create003Result.lastResult; // this is path to created file
          // here i need some code from you
         }



         <nhealthreports:NhealthReports id="nhealthReports"
                                   showBusyCursor="true"/>     
        <s:CallResponder id="create003Result" result="getFormModuleDataResult_resultHandler(event)"/>

回答1:


So you'd need to first download the file to the user's machine and then open it. Something like this should do it (copy pasted stuff from my projects so you might need to adjust it a bit).

Also your server might need a crossdomain file so your app can load files from it.

    private function getFormModuleDataResult_resultHandler(event:ResultEvent):void
    {
        // load file
        var loader:URLLoader = new URLLoader();
        loader.addEventListener(Event.COMPLETE, onLoadingComplete);
        loader.dataFormat = URLLoaderDataFormat.BINARY;
        loader.load(new URLRequest(pathToFile));
    }

    private function onLoadingComplete(event:Event):void
    {
        // get the data as bytearray
        var data:ByteArray = event.target.data;

        // you will probably need to figure this out from your server path or define your own here
        var fileName:String = "MyFilename.doc";

        // create a file under the application storage directory (C:\Users\YOURUSERHERE\AppData\Roaming\RateBook\Local Store)
        // you can store the file anywhere but it is recommended to do it here 
        // as users with restricted access on their machines (non-admin users) might have trouble saving the files elsewhere
        var file:File = File.applicationStorageDirectory.resolvePath(fileName);

        //create a file stream to be able to write the content of the file    
        var fileStream:FileStream = new FileStream();
        //open the file stream and set for Write
        fileStream.open(file, FileMode.WRITE);
        //writes the bytes
        fileStream.writeBytes(data, 0, data.length);
        //close the stream
        fileStream.close();

        // by now the file should be saved to disk, let's open it
        // Naturally this assumes that the user have the file extension (like .doc) associated with the correct program (MS Word)
        file.openWithDefaultApplication();
    }


来源:https://stackoverflow.com/questions/37153929/flex-as3-how-to-open-docx-odt-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!