5

クライアント側のValumとPlayでAjaxファイルのアップロードを実装しています!サーバー側で2.0.4。私のアクションメソッドは次のようになります。

  def ajaxup = Action(parse.temporaryFile) { request =>
    try {
      request.body.moveTo(new File("/somepath/foo.jpg"))
    } catch {
      case e: Exception => Logger.error(e.getMessage)
    }
    Ok("File uploaded")
  }

アップロードは正常に機能します。つまり、ファイルはの名前foo.jpgで正しく保存され/somepath/ます。しかし、それは例外もスローします:

Path(/somepath/foo.jpg) exists but replace parameter is false

どうすればそれを回避できますか?作成しているファイルにプロパティを設定する必要がありますか?

4

2 に答える 2

5

既存のファイルを上書きしたいと思います/somepath/foo.jpg。そうでない場合は、そのファイルがすでに存在するかどうかを事前に確認してください。

とにかく、エラーメッセージはすでにあなたにヒントを与えました。ケースクラスのドキュメントをご覧ください。TemporaryFileこのmoveToメソッドは2つのパラメーターを持つことができます。2つ目はデフォルトでfalse、既存のファイルを置き換えることを示します。

つまり、要するに、代わりに

request.body.moveTo(new File("/somepath/foo.jpg"))

あなたが書く

request.body.moveTo(new File("/somepath/foo.jpg"), true)
于 2012-11-12T12:47:26.287 に答える
4

moveTo()APIドキュメントから、ファイルを置き換えるには、次を使用する必要があります。

request.body.moveTo(new File("/somepath/foo.jpg"), true)
于 2012-11-12T12:45:07.283 に答える