播放框架 - 如何写入公共资产

时间:2017-12-12 14:31:38

标签: scala playframework playframework-2.6

尝试处理上传的图像,然后显示结果。遵循:https://github.com/playframework/play-scala-fileupload-example

相关摘要:

char*

如何获取private def handleFilePartAsFile: FilePartHandler[File] = { case FileInfo(partName, filename, contentType) => val path: Path = Files.createTempFile("multipartBody", "tempFile") val fileSink: Sink[ByteString, Future[IOResult]] = FileIO.toPath(path) val accumulator: Accumulator[ByteString, IOResult] = Accumulator(fileSink) accumulator.map { case IOResult(count, status) => logger.info(s"count = $count, status = $status") FilePart(partName, filename, contentType, path.toFile) } } 资产文件夹的绝对路径,将图像写入,而不是使用/public/images

1 个答案:

答案 0 :(得分:1)

我想你会从你提到的链接中使用Play 2.6中的Play 2.6。 在这种情况下,您可以从4个路径构建/ public / images文件夹中的文件路径:

  1. 部署Play的绝对路径!应用
  2. 资产文件夹的基础(相对)路径
  3. /图像
  4. 文件名
  5. 在Scala中:

    val path = env.rootPath + af.assetsBasePath + "/images/" + filename
    

    对于第一和第二部分,您需要自动注入Environment和AssetsFinder对象,如:

    @Singleton
    class HomeController @Inject() (cc:MessagesControllerComponents, 
        af: AssetsFinder, env: Environment)
    (implicit executionContext: ExecutionContext)
    ...