当前位置: 首页 > 知识库问答 >
问题:

使用PostgreSQL在Vapor 3中上传图像

臧梓
2023-03-14

我正在关注马丁·拉塞克的教程,现在我正在“图片上传”。似乎没有人能回答“如何上传图片i Vapor 3”这个问题

db连接正常,所有其他值都被保存。

这是mye创建方法

    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>

我知道需要一种管理文件的方法,原始图像字节,

但是我怎么去那里呢?

共有3个答案

周阳成
2023-03-14

为了使req.content.decode(Question.self)工作,您的模型必须符合Content协议,该协议是可编码其他编码/解码内容的Vapor封装。

您是否将其添加到您的问题模型中?

诸如此类:

extension Question: Content {}
边桐
2023-03-14

我设法通过这样做来获取图像数据

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>
关飞翼
2023-03-14

这使用多部分表单的自动解码:

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)
}

上传。叶文件是:

<form method="POST" enctype="multipart/form-data">
<input type="file" name="document" />
<input type="submit" value="Send" />
</form>

使用文件类型可以访问上载文件的本地文件名以及文件数据。如果将其余的问题字段添加到ExampleUpload结构中,则可以使用路由捕获整个表单的字段。

 类似资料:
  • 问题内容: 我建立了一个可以摄取图像的模型,可以读取像素级别的图像,然后确定图像中包含猫还是狗。出于教育目的,我现在尝试将其放入Flask应用程序中(以前从未使用过Flask)。到目前为止,我的工作:用户上传图像,Flask将图像保存到磁盘,图像被操纵并发送到模型,模型预测,然后从模板生成输出页面。现在,我想显示用户上传的图像,但是遇到了问题。适用的代码在这里: 和模板: 我要返回的是“预测:ya

  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。

  • 经过一些研究,我发现了一个用于多部分文件上传的开放库。在我的情况下,我想上传一个图像使用PUT请求,其中的图像要么是从画廊或相机选择。以下是我正在使用的资源:1。https://github.com/gotev/android-upload-service2.https://www.simplifiedcoding.net/android-upload-image-to-server/#comme

  • 我正试图用Alamofire将图像上传到服务器,但我的代码不起作用。这是我的代码: 这是urlRequestWithComponents方法: 这就是我在控制台得到的: 请求{URL:http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ }响应可选({URL:http://tranthanhphongcntt.esy.es/tas

  • 我正在尝试用相机运行时拍摄的一张图像发布。如何在android中使用改造发布图像。这是我的界面 我用来上传图片和其他细节的代码 输出-onFailure:JSON必须以数组或对象开头。 我不知道这是对还是错。请帮助我发布一些图片以及使用Reformat2 beta 3的其他详细信息。

  • 我在试图让Alamofire上传图像时被困了三天。其想法是,Alamofire将使用一些php代码将其发送到服务器。在不同的地方进行了大量的尝试和研究之后,一些代码应该可以工作,但是Alamofire的服务器端文档非常糟糕。 Swift 3最近的更新对明智的回答没有多大帮助... 这是我的Swift 3代码: 这应该上传到服务器上的图像,但我不知道如何正确地将图像保存在服务器上。服务器实际上不需要