【发布时间】:2021-12-10 20:25:56
【问题描述】:
我希望有人可以帮助我。我使用以下代码 sn-p 将图像上传到我的服务器(这是从这里复制的: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)
一些确凿的事实:
- 前端:Vue.js 2.6.12
- 后端:Play!Framework 与 Scala (2.12.8) 和 sbt 版本 4.0.0
- 这是我在 vue 中的输入框:
<input type="file" ref="file" @change="onSelect" />
我真的希望有人可以帮助我:)。如果您需要更多信息来帮助,请问我:)
谢谢!
【问题讨论】:
标签: scala file-upload vuejs2 playframework