swift – 使用PostgreSQL在Vapor 3中上传图片
发布时间:2020-12-14 05:30:22 所属栏目:百科 来源:网络整理
导读:我正在关注这些家伙 Martin Lasek教程,现在我正在“图片上传”. 似乎没有人能回答“如何上传i Vapor 3图像”的问题 Db连接正常,所有其他值都保存. 这是我的创建方法: func create(_ req: Request) throws - FutureResponse { return try req.content.decode
我正在关注这些家伙
Martin Lasek教程,现在我正在“图片上传”.
似乎没有人能回答“如何上传i Vapor 3图像”的问题 Db连接正常,所有其他值都保存. 这是我的创建方法: func create(_ req: Request) throws -> Future<Response> { return try req.content.decode(Question.self).flatMap { question in return question.save(on: req).map { _ in return req.redirect(to: "/form") } } } 和型号: final class Question: PostgreSQLModel { var id: Int? var questionText: String var answers: [String] var theme: String? var imageName: String? var imageData: File? init(id: Int? = nil,questionText: String,answers: [String],theme: String,imageName: String?,imageData: File?) { self.id = id self.questionText = questionText self.answers = answers self.theme = theme self.imageName = imageName self.imageData = imageData } } 和叶子模板: <form action="/save" method="POST" enctype="multipart/form-data" id="upload-form"> <input type="file" accept="image/png,image/jpg" name="image"> <input class="btn btn-success btn-block" type="submit" value="Legg til"> </form> 我知道需要一种管理文件的方法和原始图像字节, 但我怎么去那里?
这使用多部分表单的自动解码:
router.get("upload") { request -> Future<View> in return try request.view().render("upload") } struct ExampleUpload: Content { let document: File } // this saves the file into a Question router.post(ExampleUpload.self,at:"upload") { request,upload -> Future<HTTPResponseStatus> in let question = try Question() question.imageData = upload.document.data question.imageName = upload.document.filename return question.save(on:request).transform(to: HTTPResponseStatus.ok) } upload.leaf文件是: <form method="POST" enctype="multipart/form-data"> <input type="file" name="document" /> <input type="submit" value="Send" /> </form> 使用File类型可以访问上载文件的本地文件名以及文件数据.如果将其余的Question字段添加到ExampleUpload结构中,则可以使用该路径捕获整个表单的字段. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |