2

ローカル ファイルをアップロードできる単純なフレックス アプリケーションがあります。これはシンプルなボタンで、クリック イベントでファイル ダイアログが表示されます。

選択したファイルは PHP スクリプトによって処理され、私のローカル マシンでうまく機能します。flex-debug または flex-release プロジェクトをリモート サーバーに移動しようとすると、アップロード機能が機能しなくなります。

ネットワークを検査すると、POST が実行されますが、なんらかの理由で 1 分間保留中の状態になりますが、成功した後はうまく動作せず、期待どおりにファイルがアップロードされません。

// file is a file:FileReference object
var uploadURL:URLRequest = new URLRequest();
var params:URLVariables = new URLVariables();
file.addEventListener(Event.COMPLETE, uploadComplete);
params.maxSize = maxSize;
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = params;
uploadURL.url = uploadScript;
file.upload(uploadURL, IMAGE_FIELD);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadDataComplete);
file.addEventListener(Event.COMPLETE, uploadComplete);    

編集: Flash Builder 4.5 から生成されたデバッグ フォルダーを C:\www から D:\www の 2 番目のローカル ホストに移動しようとすると、アップロード スクリプトが機能しなくなります。いくつかの展開オプションを見逃して、.mxml が存在する C:\www にしか表示されない可能性があります。

Edit2: リモート サーバーに問題がありました。つまり、アップロード ファイルの移動機能が正しく機能していませんでした。問題は、Flex ではなく、upload.php スクリプトによるものでした。助けてくれてありがとう。お騒がせしてすみません。

4

3 に答える 3

3

使用してみてください:

var request : URLRequest = new URLRequest("http://{you_site_domain}/upload.php");

そしてチェック

loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, ioErrorHandler);
于 2013-02-13T14:37:44.757 に答える
1

1) サービス パスまたは同様の例を提供します。

2) アップロードされたファイルの大きさは、2Mb 未満でテストしましたか (デフォルトの php.ini では小さなファイル サイズしか許可されていません)。

3) 表示される正確なエラー メッセージは何ですか?

4) ProgressEvent をリッスンできますか?アップロードが遅いだけで、大きなファイルを使用している可能性があります。

5) IOErrorEven.IO_ERROR と SecurityErrorEvent.SECURITY_ERROR をリッスンします。

于 2013-02-15T08:27:43.827 に答える
1

確認すべきポイントがいくつかあります-

1) 使用しているサービス パスを、ブラウザのアドレスバーで実行して再確認します。2) アップロード パス フォルダーのアクセス許可を確認します。

于 2013-02-13T08:33:15.820 に答える