如果我在生产模式下将文件上传到文件系统(到 public assets目录),则之后不会提供该文件。我需要运行 clean 命令。我找不到文件错误。我怎么能避免这个?
答案 0 :(得分:3)
虽然可以将文件作为操作结果发送(您证明了什么),但我建议将公共上传存储在应用程序之外并使用通用HTTP服务器提供。
原因很简单:
答案 1 :(得分:2)
我不喜欢这个答案,但是没有办法轻易实现这个目标。
因为,“it's not a very good way to do things, it is unreliable, it doesn't scale, and there are security concerns”。 (我不同意这一点,但这是事实)。
最佳解决方案是将您的文件存储在数据库中,或将其上传到S3等其他服务。
答案 2 :(得分:0)
我添加了一个自定义Assets控制器,现在它似乎正常工作:
package customcontrollers
import controllers.Assets
import play.api.mvc.Action
import play.api.mvc.AnyContent
import play.api.mvc.Results.Ok
import play.api.Play.current
import play.api._
object UploadedImageAssets {
def at(file: String): Action[AnyContent] = Action {
Ok.sendFile(Play.getFile("public/uploaded-images/"+file))
}
}