蒸气:如何不接收特定的上载?

时间:2018-07-08 19:29:03

标签: swift vapor

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上传数据内容(例如一些大文件)?

0 个答案:

没有答案