一:快速入手Perfect提供Http服务
二:开发第一个Http服务
三:MySQL接触
四:Navicat for MySQL的基本使用
五:Perfect连接MySQL数据库
六:使用域名访问Http服务
七:后台服务器上传和下载文件
上传:
官方文档
如果要使用文件上传空间,则必须选择multipart/form-data作为表单的enctype编码类型。
- 对请求类型的过滤
//通过判断postFileUploads的数量来判断是不是使用了multipart/form-data类型,是的话count就不为0
if let uploads = req.postFileUploads , uploads.count > 0 {
......
///
}
- 文件的保存
if let uploads = req.postFileUploads , uploads.count > 0 {
......
// 创建路径用于存储已上传文件,保证指定路径有文件夹存在.路径可以自定义
let fileDir = Dir(Dir.workingDir.path + "files")
do {
try fileDir.create()
} catch {
print(error)
}
for upload in uploads {
// 将文件转移走,如果目标位置已经有同名文件则进行覆盖操作.
let thisFile = File(upload.tmpFileName)
do {
let _ = try thisFile.moveTo(path: fileDir.path + upload.fileName, overWrite: true)
} catch {
print(error)
}
}
}
下载
官方文档
routes.add(method: .get, uri: "/files/**") {
request, response in
// 获得符合通配符的请求路径
//request.path = request.urlVariables[routeTrailingWildcardKey]
//指定要下载的filename+后缀
request.path = "Snip20191212_2.png"
// 用文档根目录初始化静态文件句柄,参数为文件的根目录
let handler = StaticFileHandler(documentRoot: "/var/www/htdocs")
// 用我们的根目录和路径
// 修改集触发请求的句柄
handler.handleRequest(request: request, response: response)
)