1

Flex 4.5 で FileReference を使用して、ファイルを Tibco Web サーバーにアップロードしています。以下は、これを処理するために数か月前に書いたフレックス コードです。当時は問題なく機能していましたが、現在は機能していないようで、理由がわかりません。コードのこの部分は、数か月前に書いてから何も変わっていないことを確信しています。関数を使用してファイルをアップロードしようとすると、次のエラー メッセージが表示されます: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2038: File I/O Error. URL: http ://localhost:1112/CCWS/uploadFile?changeID=1325863504338&fileName=out%2Etxt "]

public function uploadFile():void
{

    var fr:FileReference = new FileReference();

    fr.addEventListener(IOErrorEvent.IO_ERROR,function(event:IOErrorEvent):void{
        Alert.show(event.toString());
    });

    fr.addEventListener(Event.SELECT, function (event:Event):void{

        var uploadURL:URLRequest = new URLRequest(url + "/CCWS/uploadFile" );
        var params:URLVariables = new URLVariables();
        params.fileName = fr.name;
        params.changeID = requestIDText.text;
        uploadURL.data = params;

        fr.upload(uploadURL,"fileContent");

    });

    fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (event:DataEvent):void{
        var obj:ObjectProxy = new ObjectProxy();
        obj.fileName = fr.name;
        obj.fileID = event.data;

        filesDataProvider.addItem(obj);
    });
    fr.browse();
}

この例では、url は "http://localhost:1112" に設定され、サーバーは localhost でも実行され、ポート 1112 で http 要求リスナーが使用されていました。同じプロセスで、すべて滞りなく応答します (ファイル ダウンロード サービスを含む)。

Fiddler2 を使用してパケット トラフィックを監視したところ、Flex がサーバーに要求を送信していないことがわかりました。何が起こっているのかを確認するために、コードを次のように単純化しました。 public function uploadFile():void { var fr:FileReference = new FileReference();

    fr.addEventListener(IOErrorEvent.IO_ERROR,function(event:IOErrorEvent):void{
        Alert.show(event.toString());
    });

    fr.addEventListener(Event.SELECT, function (event:Event):void{

        var uploadURL:URLRequest = new URLRequest("http://localhost:1112/" );
        var params:URLVariables = new URLVariables();
        params.fileName = fr.name;
        params.changeID = "1325863504338";
        uploadURL.data = params;

        fr.upload(uploadURL,"fileContent");
    });

    fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (event:DataEvent):void{
        var obj:ObjectProxy = new ObjectProxy();
        obj.fileName = fr.name;
        obj.fileID = event.data;
        Alert.show(obj.fileName,obj.fileID);
        filesDataProvider.addItem(obj);
    });
    fr.browse();
}

ファイルを「http://localhost/」にアップロードしようとすると、HTTP 500 応答が返されます。これは、apache ホーム ディレクトリの index.html ファイルがファイルのアップロードを処理しないためです。しかし、パケット情報が Fiddler2 に表示されることも確認できます。URL を「http://localhost:1112/」に戻すと、同じ種類のエラー メッセージが再度表示され、Fiddler2 でパケット トランザクションが表示されなくなります。

ポート 1112 に送信しようとしてクロスドメインの問題が発生する可能性がある場合に備えて、 http://localhost/crossdomain.xmlに crossdomain.xml ファイルを追加しようとしました (これは意味がありませんが、すべて同じように試しました)。 )。ファイルにはこれが含まれていました:

なぜ私が問題を抱えているのかについて誰かが洞察を持っているなら、私はそれを感謝します.

4

0 に答える 0