10

私はこの人のMartin Lasekチュートリアルに従っていますが、今は「画像のアップロード」にいます. 「Vapor 3に画像をアップロードするにはどうすればよいですか」という質問に対する答えは誰もないようです

データベース接続は問題ありません。他のすべての値は保存されています。

これは私の作成方法です:

    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>

ファイルを管理する方法が必要であり、未加工の画像バイトを

しかし、どうやってそこに着くのですか?

4

3 に答える 3

4

これを行うことで画像データを取得できました:

struct ImageRequest: Content {
    var imageData: Data
}

func analyizeImage(_ request: Request) throws -> Future<Response> {
    return try request.content.decode(ImageRequest.self).flatMap(to: Response.self, { [weak self] imageRequest in
        guard let image = NSImage(data: imageRequest.imageData) else {
            throw Abort(.badRequest)
        }

        // Do what you want with your image
    })
}

私のフォームは次のようになりました:

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="imageData" />
    <input type="submit" value="Send" />
</form>
于 2018-07-30T11:24:07.477 に答える