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

Swift 从自定义路由(不是FileMiddeleware的公用文件夹)返回二进制文件,swift,vapor,Swift,Vapor,我想通过不想公开的路由返回文件。我的用户需要使用带有唯一一次性代码的URL。因此,我不想通过FileMiddleware使用公用文件夹 这是一个二进制可执行文件,不是文本文件。我可以使用FileManager获取文件作为数据,但似乎Future不是路由的有效返回类型 在搜索StackOverflow之后,我发现的唯一一件事是对一个类似问题的回答: 但这并不能真正说明如何实现它。router.get(“customfile”){req->Future in 返回try req.streamFile

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

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

在搜索StackOverflow之后,我发现的唯一一件事是对一个类似问题的回答:

但这并不能真正说明如何实现它。

router.get(“customfile”){req->Future in
返回try req.streamFile(位于:“/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
  }
}

哦,酷,比我想象的简单多了。我要试试看!工作完美。谢谢我怎样才能告诉客户文件有多大?下载时,客户端只显示下载了多少,但不显示百分比,因为它不知道文件有多大。