- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 Swift 和 Vapor 框架编写服务器端应用程序。但是,我不知道如何使用 Vapor 提供静态文件。仅仅将它们移动到 Public
或 Resources
目录是不够的。
我该怎么做?
更新。我执行了 Tanner Nelson 建议的步骤,但仍然无效。
到目前为止我尝试了什么:
vapor build
和 vapor run
(使用 Vapor Toolbox v0.6.1)。
./build/debug/App
来自根目录(包含 Package.swift
)。
按照 Tanner Nelson 的建议编辑方案后,在 Xcode 8 beta 中运行。
在所有这些情况下我都会出错{"error":true,"message":"找不到页面"}
我在 Public
文件夹中有文件 vapor_logo.png
,在 Public/images/
文件夹中也有相同的文件。我尝试请求它但它失败了。我提出的请求:http://localhost:8080/image/vapor_logo.png
和 http://localhost:8080/vapor_logo.png
。但是,其他路线工作正常。
UPD 2.好吧,这都是我的错误。首先,我认为名为 vapor_logo.png
的文件实际上名为 vapor-logo.png
。其次,当你提出请求时,案例很重要。我还尝试请求名称为 IMG_8235.JPG
的文件,但将文件扩展名写为 jpg
,所以出现错误。
因此,回顾一下:如果您遇到与我相同的问题,请遵循 Tanner Nelson 的回答并确保所请求文件的名称完全与磁盘上文件的名称匹配。
最佳答案
来自 Docs 的 Vapor 文件夹结构:
VaporApp
├── Package.swift
├── Resources
│ ├── Views
│ │ └── hello.leaf
├── Public
│ ├── images (images resources)
│ ├── styles (css resources)
└── Sources
└── ...
如果没有注册与文件名冲突的路由,默认情况下将提供 Public
文件夹中的任何文件。
例如,如果你有一个文件 Public/foo.png
和下面的 main.swift
文件:
import Vapor
let drop = Droplet()
drop.get("welcome") { request in
return "Hello, world"
}
drop.serve()
对 localhost/welcome
的请求将返回 "Hello, world"
而对 localhost/foo.png
的请求将返回 foo.png
.
如果这不能正常工作,可能是您的工作目录配置不正确。如果您从 Xcode 运行项目,或者从不是项目根目录的文件夹的命令行运行项目,就会发生这种情况。
要修复 Xcode,转到 Schemes > App > Edit Scheme > Run > Options > Working Directory > [x] Use Custom Working Directory
并确保该目录设置为项目的根目录(Package.swift 所在的位置)。
要修复从命令行运行的问题,请确保您是从根目录运行应用程序。即,运行命令应该类似于 .build/debug/App
,因为 .build
文件夹位于根目录中。
关于swift - 如何使用 Vapor 提供静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313470/
在我的 Package.swift 文件中尝试更新版本后,我的 Vapor 和 Vapor-MySQL 设置失败了。 最终,我想要一个包含以下内容的 Package.swift: .Package(u
在 Vapor 3 中,我能够获取到数据库的 newConnection 并使用以下命令调用原始 sql 查询: return request.withNewConnection(to: .mysql
我有一个静态网页存储在我的 Vapor 服务器的公共(public)文件夹中。它有一个index.html 文件。但是,当我导航到 root (http://localhost:8080) 时,它显示
我有一个静态网页存储在我的 Vapor 服务器的公共(public)文件夹中。它有一个index.html 文件。但是,当我导航到 root (http://localhost:8080) 时,它显示
我关注了 Vapor tutorial创建一个你好应用程序。在 Xcode 中,当我在我的 Mac 上运行运行方案时,应用程序启动并运行,正如我通过打开 http://localhost:8080/看
我正在尝试使用存储库模式将一些代码从 Vapor 3 迁移到 Vapor 4。我已经完成了 documentation of this specific pattern来自 Vapor 4 文档,我想
我可以使用计时器吗,例如 NSTimer在 Vapor(服务器端 Swift)中? 我希望我用 Vapor 编写的服务器可以偶尔主动完成一些任务。例如,每 15 分钟从网络上轮询一些数据。 如何使用
我添加了 .package(url: "https://github.com/vapor-community/postgresql-provider.git", .upToNextMajor(from
我正在使用 Vapor 开发一个简单的 Web API。为了提供更多背景信息,我是后端开发的新手。 API 的使用者将是一个 iOS 应用程序。目前,我不需要用户注册即可使用该应用程序。我想保持这种状
在我的旧 Vapor 3 代码中,我正在创建这样的模型: address.create(on: conn).flatMap { savedAddress in // do something
我从 Vapor 3 更新到 4,从 Xcode 11 更新到 12。现在 Leaf 找不到我的 *.leaf 模板。我收到“noTemplateFile”错误。 最佳答案 我在这里找到了答案:htt
我有一个使用 get 处理程序的 Controller 返回 Future .我想在响应中添加一个 header (具体来说是 Cache-Control)。我在想这应该很容易,但我没有找到如何去做。
我想用最新的 vapor 3.x 构建 vapor 工具箱。 但是,vapor toolbox 的 Package.swift 仍然有 Vapor 2.x 依赖。 .Package(url: "htt
安装 Vapor 后,我遇到以下错误 dyld:未加载库:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib 引用自:/usr/local/bin/vapor
当我尝试运行实现 block 读取和队列的导入时,我从 vapor 队列收到以下错误; ErrorException: touch(): Unable to create file /tmp/stor
我正在使用 Vapor 尝试从另一台服务器获取 XML 文件,问题是我不知道如何将响应正文转换为快速字符串。 let bikesResponse = try drop.client.get("http
我想创建一个命令,您可以在其中创建用户(如数据库种子)。 但是,我无法在命令中访问数据库,我的代码如下: import Command import Crypto struct CreateUserC
他们是否可以替代 Vapor 的 session 中间件包? 我们的客户端平台不支持 cookie。 Vapor 使用 cookie 进行 session 管理。 Redis 有一个 session
对于我的 Vapor 项目,我想主要使用一个 Postgres 数据库。但是,对于某些长时间运行的请求,我想使用同一数据库的单独只读克隆。 这方面的文档非常少。如何在现有默认数据库旁边添加另一个数据库
如何在登录方法中通过电子邮件在 vapor 中正确找到用户并返回该用户或返回错误,我试过: func login(_ req: Request) throws -> Future {
我是一名优秀的程序员,十分优秀!