在Vapor中,如何进行设置以在将文件的任何部分上传到服务器之前检查和拒绝上传请求?
我目前在Vapor 3中的尝试是使用如下结构的路由处理程序:
func imagesUploadOneHandler(_ request: Request) throws -> EventLoopFuture<HTTPResponseStatus> {
let headers = request.http.headers
let headersUploadToken: [String] = headers["Upload-Token"]
if headersUploadToken.count != 1 || headersUploadToken[0] != aValidToken {
return HTTPResponseStatus.notAcceptable
}
// http body content type: 'application/octet-stream'
let dataFuture: EventLoopFuture<Data> = request.http.body.consumeData(max: 50_000_000, on: request)
let futureHTTPResponseStatus = dataFuture.map(to: HTTPResponseStatus.self, {
(data: Data) -> HTTPResponseStatus in
// ... other code
return HTTPResponseStatus.ok
})
return futureHTTPResponseStatus
}
首先,以上内容无法编译。第return HTTPResponseStatus.notAcceptable
行有一个编译时错误“ return HTTPResponseStatus.notAcceptable”。如何将HTTPResponseStatus
转换为EventLoopFuture<HTTPResponseStatus>
一直很困难。
第二,路由处理程序中request.http.body.consumeData(...)
之前的某些代码可以阻止文件内容的上传吗?还是需要一些中间件来避免从http.body
上传数据内容(例如一些大文件)?