为了学习,我正在使用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
出发。
但是我的问题是-在将文件移到目标位置之前,有没有提供检查文件大小的方法?