0

サーバーにファイルをアップロードしようとしています。私はこのようにやっています:

var fileRef:FileReference = new FileReference();
fileRef.addEventListener(flash.events.Event.SELECT, selectHandler);
fileRef.addEventListener(flash.events.Event.COMPLETE, completeHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, normalprogressHandler);
fileRef.browse();

function selectHandler(event:flash.events.Event):void
{
    var params:URLVariables = new URLVariables();
    params.date = new Date();
    params.ssid = "94103-1394-2345";
    var request:URLRequest = new URLRequest("http://www.test.com/Uploads"); 
    request.method = URLRequestMethod.POST;
    request.data = params;

    fileRef.upload(request, "Custom1");
}

function completeHandler(event:flash.events.Event):void
{
    trace("uploaded");
}

function normalprogressHandler(event:ProgressEvent):void
{
    var percent:Number = Math.floor((event.bytesLoaded * 100)/ event.bytesTotal );
    trace(percent+"%");
}

ファイルをアップロードすることは可能ですか?ただし、そのためのブラウザはありませんか?ユーザーが最初に参照を実行するのではなく、アップロードするファイルを自分で決定したい

4

1 に答える 1

4

FileReference次の制限がある場合はそれを行うことはできません(参照):

  1. load()およびAPIはsave()、ユーザーの操作(ボタンのクリックなど)に応じてのみ呼び出すことができます。
  2. ロードされたファイルと保存されたファイルの場所は、ActionScriptに公開されません。
  3. APIは非同期(非ブロッキング)です。

明らかに、Flashプレーヤーがローカルファイルシステムからリモートサーバーに何かをアップロードすることを任意に許可された場合、それは大きなセキュリティリスクを表します。

FileAIRアプリからアップロードしようとしている場合は、クラスでやろうとしていることを実行できます。

于 2012-05-22T08:11:11.347 に答える