如何在将文件沉入Playframework中的目标位置之前检查文件大小?

时间:2018-12-21 17:17:03

标签: scala playframework

为了学习,我正在使用scala-playframework编写代码,以使用FilePartHandler解析器中的multipartFormData上传文件。 我的代码在这里

type FilePartHandler[A] = FileInfo => Accumulator[ByteString, FilePart[A]]

def filePartHandler: FilePartHandler[File] = {
    case FileInfo(partname, fileName, contentType) =>

    //   val isAppropriateFileType: Boolean = List("image/png", "image/jpg", "image/jpeg").contains(contentType.getOrElse(""))

    val file = new File("/tmp/picture/" + fileName)

    val sink = FileIO.toPath(file.toPath)
    val accumulator = Accumulator.apply(sink)
    accumulator.mapFuture {
        case IOResult(_, scala.util.Failure(exception)) => Future.failed(exception)
        case IOResult(size, Success(Done)) => Future.successful(FilePart(partname, fileName, contentType, file))
    }
}

我可以在accumulator.mapFuture(. . .)中检查文件大小,但是此步骤已经很晚了,因为在Accumulator步骤中,文件已移至目标位置。是的,我可以从目的地中删除文件 从上载位置accumulator.mapFuture出发。 但是我的问题是-在将文件移到目标位置之前,有没有提供检查文件大小的方法?

0 个答案:

没有答案