2

私は Play 2.0.4 と Play2 Morphia プラグインで Mongodb/Morphia を使用しています (私の知る限り、これは実際には Morphia の単なるラッパーです - https://github.com/leodagdag/play2-morphia-plugin )。

表示写真をアップロードすると、次のようにオブジェクトとともに保存します。

MultipartFormData body = request().body().asMultipartFormData();
FilePart picture = body.getFile("thumbnail");
if (picture != null) {
    File file = picture.getFile();
    obj.setThumbnailUpload(file);
}
obj.save();

これは、最初にファイルをアップロードするときに機能します。ただし、後で画像を更新せずに取引を再保存すると、チャンクが失われたと表示されます。blob を上書きしないようにするにはどうすればよいですか?

[ERROR] [10/19/2012 00:04:24.640] [promise-akka.actor.default-dispatcher-170] [akka.dispatch.Dispatcher] can't find a chunk!  file id: 507f89250364707ed55a816f chunk: 0
com.mongodb.MongoException: can't find a chunk!  file id: 507f89250364707ed55a816f chunk: 0
    at com.mongodb.gridfs.GridFSDBFile.getChunk(GridFSDBFile.java:103)
    at com.mongodb.gridfs.GridFSDBFile$MyInputStream.read(GridFSDBFile.java:151)
    at com.mongodb.gridfs.GridFSDBFile$MyInputStream.read(GridFSDBFile.java:142)
    at play.api.libs.iteratee.Enumerator$$anonfun$fromStream$2.apply(Iteratee.scala:980)
    at play.api.libs.iteratee.Enumerator$$anonfun$fromStream$2.apply(Iteratee.scala:978)
    at play.api.libs.iteratee.Enumerator$$anon$17$$anonfun$22.apply(Iteratee.scala:949)
    at play.api.libs.iteratee.Enumerator$$anon$17$$anonfun$22.apply(Iteratee.scala:948)
    at play.api.libs.iteratee.Cont$$anon$21.fold(Iteratee.scala:341)
    at play.api.libs.iteratee.Iteratee$$anon$18$$anonfun$fold$1.apply(Iteratee.scala:16)
    at play.api.libs.iteratee.Iteratee$$anon$18$$anonfun$fold$1.apply(Iteratee.scala:16)
    at play.api.libs.concurrent.AkkaPromise$$anonfun$flatMap$1.apply(Akka.scala:58)
    at play.api.libs.concurrent.AkkaPromise$$anonfun$flatMap$1.apply(Akka.scala:57)
    at akka.dispatch.Future$$anonfun$onSuccess$1.apply(Future.scala:484)
    at akka.dispatch.Future$$anonfun$onSuccess$1.apply(Future.scala:483)
    at akka.dispatch.KeptPromise$$anonfun$onComplete$2.apply$mcV$sp(Future.scala:956)
    at akka.dispatch.Future$$anon$4$$anonfun$run$1.apply$mcV$sp(Future.scala:386)
    at akka.dispatch.Future$$anon$4$$anonfun$run$1.apply(Future.scala:378)
    at akka.dispatch.Future$$anon$4$$anonfun$run$1.apply(Future.scala:378)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
    at akka.dispatch.Future$$anon$4.run(Future.scala:378)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:94)
    at akka.jsr166y.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1381)
    at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259)
    at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
    at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1479)
    at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)

ありがとうスティーブ

4

0 に答える 0