0

こんにちは、URLRequest パラメータで相対パスを指定してそのファイルをダウンロードする方法を見つけました。この特定のスタック オーバーフロー ポストから見つけました。Christian Nunciato と heri0n に感謝します。

したがって、マシンの相対パスを指定すると、C:/sample/DefectList.xls機能します。ここで、サーバー マシンまたは他のマシン (チーム メイトのマシンなど) に保存されている xls ファイルにアクセスする必要があります。IP アドレスは172.17.196.124で、場所はC:/sample/test.xlsです。

試してみ
var request:URLRequest = new URLRequest"file://172.17.196.124/c:/sample/test.xls"); ましたが、Error#2032 がスローされます。

リモートの場所を相対パスとして言及する方法は?

<?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("C:/sample/DefectList.xls"); 
                    var request:URLRequest = new URLRequest("file://172.17.196.124/c:/sample/test.xls"); 

                    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);  
            } 

    ]]> 
  </mx:Script> 

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

</mx:Application> 
4

2 に答える 2

0

flex からユーザーのデスクトップに何かを直接ダウンロードすることはできません。サーバーから行う必要があります。サーバーからファイルのダウンロードを開始するには、FileReference.download()メソッドを使用します。ダウンロードはユーザーの同意がある場合にのみ行われます。ユーザーがダウンロード プロンプト ウィンドウで [キャンセル] をクリックすると、ダウンロードはキャンセルされます。

downloadURL = new URLRequest();
downloadURL.url = filename_relative_to_swf_location;
file = new FileReference();
file.addEventListener(Event.COMPLETE, completeHandler);
file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
file.download(downloadURL, fileName);
private function completeHandler(event:Event):void 
{
  trace("completeHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void 
{
  trace("ioErrorHandler: " + event);
}
于 2009-11-05T07:09:49.843 に答える
0

ローカル ファイルを操作するアプリケーションを作成しようとしている場合は、ファイルを操作するためのツールが提供されるため、おそらく Web Flex プロジェクトではなく AIR プロジェクトを作成する必要があります。ローカル ファイルは、ハード ドライブからコンパイル済みの swf を開いた場合にのみ機能します。セキュリティ ポリシーは、swf が Web サーバーからロードされている場合、flex swf がローカル ファイルに簡単にアクセスすることを禁止します。

役に立つかもしれないいくつかのビデオ:

* Comparing Flash, Flex, Flash Player and Adobe AIR (5:30)
* Exercise 13: Creating and deploying an AIR application

フレックスで一週間

于 2009-11-05T14:09:19.813 に答える