玩!框架工作:我在将图像上传到服务器时遇到问题



我希望有人能帮助我。我使用以下代码片段上传图像到我的服务器(这是从这里复制的:https://www.playframework.com/documentation/2.8.x/ScalaFileUpload

)
```def upload = Action(parse.multipartFormData) { request =>
request.body
.file("file")
.map { picture =>

val filename    = Paths.get(picture.filename).getFileName
val fileSize    = picture.fileSize
val contentType = picture.contentType
// Test Print
print("content Type: "+contentType)
print("filename: "+filename)
print("filesize: "+fileSize)
picture.ref.copyTo(Paths.get(s"/tmp/picture/$filename"), replace = true)
Ok("File uploaded")
}
.getOrElse {
null //TODO: changeme
}
}```

我检查了文件名,文件大小和内容类型与我的打印方法,它似乎正在工作..

但是我总是得到下面的异常:

java.lang.ClassCastException: xsbti.BasicVirtualFileRef cannot be cast to java.io.File
at play.sbt.run.PlayReload$.$anonfun$sourceMap$1(PlayReload.scala:70)
at scala.collection.MapLike$MappedValues.get(MapLike.scala:261)
at play.runsupport.Reloader.$anonfun$findSource$1(Reloader.scala:552)
at scala.Option.flatMap(Option.scala:271)
at play.runsupport.Reloader.findSource(Reloader.scala:551)
at play.core.server.DevServerStart$$anon$1$$anon$2.sourceOf(DevServerStart.scala:174)
at play.core.SourceMapper.$anonfun$sourceFor$1(ApplicationProvider.scala:22)
at play.core.SourceMapper.$anonfun$sourceFor$1$adapted(ApplicationProvider.scala:22)
at scala.collection.IndexedSeqOptimized.$anonfun$find$1(IndexedSeqOptimized.scala:53)
at scala.collection.IndexedSeqOptimized.$anonfun$find$1$adapted(IndexedSeqOptimized.scala:53)

一些事实:

  • front: Vue.js 2.6.12
  • 后台:玩!框架与Scala(2.12.8)和sbt版本4.0.0
  • 这是我的输入字段值:<input type="file" ref="file" @change="onSelect" />

我真的希望有人能帮助我:)。如果你需要更多的信息来帮助,就问我:)

谢谢!

根据这个线程,Play可能有某些SBT版本的问题,反之亦然。

这个方法可能对你有用。

这个问题也在Play 2.8.8中修复了,所以尝试更新到最新版本。

最新更新