我在 appfog 上部署了我的 play framework 2.1 应用程序(同样的问题也存在于 cloudfoundry 上,因为它们本质上是相同的)。我的应用程序允许文件上传,但我在获取文件时遇到错误。当我使用 play run 在本地运行时,它工作正常。
我的代码如下:
MultipartFormData body = request().body().asMultipartFormData();
FilePart midi = body.getFile("midi");
File file = midi.getFile();
日志中的错误消息是:
play.api.Application$$anon$1: Execution exception[[IOException: No such file or directory]]
at play.api.Application$class.handleError(Application.scala:289) ~[play.play_2.10-2.1.0.jar:2.1.0]
at play.api.DefaultApplication.handleError(Application.scala:383) [play.play_2.10-2.1.0.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$handleAction$1$4$$anonfun$apply$28.apply(PlayDefaultUpstreamHandler.scala:391) [play.play_2.10-2.1.0.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$handleAction$1$4$$anonfun$apply$28.apply(PlayDefaultUpstreamHandler.scala:391) [play.play_2.10-2.1.0.jar:2.1.0]
at scala.Option.map(Option.scala:145) [org.scala-lang.scala-library-2.10.0.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$handleAction$1$4.apply(PlayDefaultUpstreamHandler.scala:391) [play.play_2.10-2.1.0.jar:2.1.0]
Caused by: java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.7.0_11]
at java.io.File.createTempFile(Unknown Source) ~[na:1.7.0_11]
at java.io.File.createTempFile(Unknown Source) ~[na:1.7.0_11]
at play.api.libs.Files$TemporaryFile$.apply(Files.scala:60) ~[play.play_2.10-2.1.0.jar:2.1.0]
at play.api.mvc.BodyParsers$parse$Multipart$$anonfun$handleFilePartAsTemporaryFile$1.apply(ContentTypes.scala:624) ~[play.play_2.10-2.1.0.jar:2.1.0]
at play.api.mvc.BodyParsers$parse$Multipart$$anonfun$handleFilePartAsTemporaryFile$1.apply(ContentTypes.scala:622) ~[play.play_2.10-2.1.0.jar:2.1.0]
看起来从 multipartForm 创建临时文件时遇到问题。有没有解决这个问题的好方法?我的应用程序存储在 AWS 上,通过 appfog 进行配置。