从自定义路由(不是 FileMiddeleware 的公共文件夹)返回二进制文件



我想通过我不想公开的路由返回文件。我的用户需要使用具有唯一一次性代码的 URL。因此,我不想通过文件中间件使用公用文件夹。

这是一个二进制可执行文件,而不是文本文件。我可以使用FileManager获取文件作为数据,但似乎Future<Data>不是路由的有效返回类型。

在搜索 StackOverflow 之后,我唯一发现的就是对类似问题的回复:如何使用 Vapor 服务器端 swift 下载文件并发送文件?

但这并没有真正填补如何完成它。

router.get("customfile") { req -> Future<Response> in
return try req.streamFile(at: "/path/to/file")
}

这对我有用。

func routes(_ app: Application) throws {
app.get("downloadthefile") { req -> Response in
let filePath = "path/to/the/file"
let result = req.fileio.streamFile(at: filePath)
return result
}
}

最新更新