gpt4 book ai didi

swift - 如何使用 Vapor 提供静态文件?

转载 作者:IT王子 更新时间:2023-10-29 05:25:47 24 4
gpt4 key购买 nike

我正在尝试使用 Swift 和 Vapor 框架编写服务器端应用程序。但是,我不知道如何使用 Vapor 提供静态文件。仅仅将它们移动到 PublicResources 目录是不够的。

我该怎么做?

更新。我执行了 Tanner Nelson 建议的步骤,但仍然无效。

到目前为止我尝试了什么:

  1. vapor buildvapor run(使用 Vapor Toolbox v0.6.1)。

  2. ./build/debug/App 来自根目录(包含 Package.swift)。

  3. 按照 Tanner Nelson 的建议编辑方案后,在 Xcode 8 beta 中运行。

在所有这些情况下我都会出错{"error":true,"message":"找不到页面"}

我在 Public 文件夹中有文件 vapor_logo.png ,在 Public/images/ 文件夹中也有相同的文件。我尝试请求它但它失败了。我提出的请求:http://localhost:8080/image/vapor_logo.pnghttp://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 所在的位置)。

Xcode working directory

要修复从命令行运行的问题,请确保您是从根目录运行应用程序。即,运行命令应该类似于 .build/debug/App,因为 .build 文件夹位于根目录中。

关于swift - 如何使用 Vapor 提供静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com