2012-01-24 9 views
1

これは私が書いたsimple Play-uploadify demoです。Playを使用して1つのファイルのみをアップロードしてアップロードできるのはなぜですか?

画像がアップロードされるたびに画像を自動的にアップロードするアップロードボタンが必要です。

何らかの理由で、初めてボタンを押したときだけ、アップロードされます。ボタンを1回押すと、以前のアップロードを「キャンセル」しない限り、何も起こりません。

(。私はautoモードでアップロードをキャンセルする意味を理解していないが、おそらく問題は、ある意味ではその私のダウンロードは決して「完全」である?)ここで

は私のアクションメソッドです:

public static void upload(File file, long userId){ 
    System.out.println("Uploaded file name " + file.getName() + 
     " by user " + userId); 
} 

そしてuploadifyするコール:

$(function() { 
    $("#uploader").uploadify({ 
     uploader : '/public/libraries/uploadify/uploadify.swf', 
     script  : '/Application/upload', 
     cancelImg : '/public/libraries/uploadify/cancel.png', 
     folder  : '/uploads', 
     fileExt  : '*.jpg;*.gif;*.png', 
     fileDesc : 'Image Files', 
     fileDataName: 'file', 
     scriptData: {userId: 123}, 
     auto: true 
    }); 
}); 

また、アップロードが完了するように見えることはありません - 私はonCompleteハンドラを追加するとき、それは、D火はない。

答えて

0

script  : '/application/upload', 

にそれを変更しよう(...あなたはデフォルトルートを使用するときは、常に小文字のURLを生成し、再生するアプリケーションでの小文字のaを注意してください。)のみアップロードすることができるというためとして

一度に1ファイル:

あなたはdevまたはproductionモードでアップロードをテストしましたか? DEVモードで 、処理のために使用可能なスレッドの量が1である、 ので、それは同じ瞬間に、すぐに2番目のファイルをアップロードするようブロックします

+0

なぜ重要ですか? – ripper234

+0

私は答えを更新しました。 –

+0

私はdevモードで作業していますが、この問題はPlayスレッドに関連していないようです。 Playアクションメソッドには 'println()'だけが含まれ、すぐに戻ります。完了しても、クライアントは別のファイルのアップロードを開始することさえできません。アップロードを正しく処理することを理解するために、おそらく私は何かをアップロードする必要がありますか? – ripper234

1

問題は、私はHTTP 200状態を返すいなかったということでしたなぜなら私はレンダリングメソッドを呼び出さなかったし、アクションメソッドの最後に値を返さなかったからです。

renderText("OK");を追加すると、私の問題が解決しました。

ok();はそれを解決するためのもう少しの方法です。

関連する問題