Vapor 3新手求助:如何处理Multipart请求实现TXT文件上传?
嘿,我刚帮你搞定了Vapor 3 RC里TXT文件上传的完整实现,完美适配你现有的代码结构,一起来看:
Vapor 3 RC 本地TXT文件上传完整方案
1. 补全控制器代码
你之前的控制器只写了开头,这里给你补全完整的上传逻辑,包含文件校验、内容读取的处理:
final class FileUploadController { func uploadTXT(_ req: Request) throws -> Future<String> { // 解析Multipart表单数据 return req.content.decode(MultipartForm.self).flatMap { form in // 匹配表单里名为"txtFile"的文件字段 guard let filePart = form.firstFile(named: "txtFile"), // 校验文件后缀是否为txt let filename = filePart.filename, filename.hasSuffix(".txt") else { throw Abort(.badRequest, reason: "请上传后缀为.txt的文件,且表单字段名需为txtFile") } // 读取文件内容并返回结果(你也可以改成保存到本地目录的逻辑) return filePart.data.readAsString().map { fileContent in return "TXT文件上传成功!文件内容:\n\(fileContent)" } } } }
2. Postman 请求设置
确保你按照下面的步骤配置Postman,才能正确发送文件:
- 新建POST请求,地址填
http://localhost:8080/uploadtxt - 切换到「Body」标签,选择「form-data」格式
- 添加一个Key,名称设为
txtFile,类型选择「File」(默认是Text,记得切换) - 点击「Choose Files」选择本地的TXT文件
- 点击「Send」发送请求,就能收到服务器返回的成功提示和文件内容啦
小提示
- 如果需要把文件保存到本地,可以把
readAsString()改成写入文件的逻辑,比如用FileManager把filePart.data写入到指定目录 - Vapor 3 RC的Multipart处理依赖
Multipart模块,一般默认的Vapor项目模板已经包含,要是报错的话可以检查Package.swift里有没有引入
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

