如何在Flex中将文件转换为ByteArray?

her*_*i0n 1 apache-flex file-io

我想知道如何将我在服务器上的文件(pdf/excel/ppt)转换为ByteArray.我想这样做的原因是为用户显示对话框打开/保存,我必须将Content-Type设置为八位字节流.对话框只显示navigateToURL(),但对于pdf,它是用户的本地浏览器设置.对于URLRequest,我必须将数据设置为ByteArray.我正在尝试使用此处的代码:

使用Flex自定义打印

Chr*_*ato 5

如果您的目标是Flash Player 10,则应该可以:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="loadFile()">

    <mx:Script>
        <![CDATA[

            private var loadedFile:ByteArray;

            private function loadFile():void
            {
                var request:URLRequest = new URLRequest("http://test.enunciato.org/sample.pdf");
                var urlLoader:URLLoader = new URLLoader(request);

                urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete);
                urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
                urlLoader.load(request);
            }

            private function onURLLoaderComplete(event:Event):void
            {
                loadedFile = event.target.data;
            }

            private function saveLoadedFile():void
            {
                var file:FileReference = new FileReference();
                file.save(loadedFile, "SampleDoc.PDF"); 
            }

        ]]>
    </mx:Script>

    <mx:Button label="Save Image" horizontalCenter="0" verticalCenter="0" click="saveLoadedFile()" />

</mx:Application>
Run Code Online (Sandbox Code Playgroud)

假设您首先加载文件 - 在此示例中,加载操作发生在creationComplete上,并且字节在loadedFile中存储 - 当用户单击"保存图像"时,字节应该可以保存.测试并验证了示例的工作原理.希望能帮助到你!