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

Swift 3如何使用Vapor发送多部分Post请求

沈良策
2023-03-14

我正在使用vapor为我的应用程序托管图像。我有以下代码来接收图像并打印它。

drop.post("saveArt") { request in
if let contentType = request.headers["Content-Type"], contentType.contains("image/png"), let bytes = request.body.bytes {
    let image = NSImage(data: Data(bytes))
    print(image)
    return JSON(["Testawesome":"awesome123"])
}
return JSON(["test":"123"])
}

我怎么能发送一个多部分的请求,只是使用swft?。这是我正在使用的当前帖子请求代码。

 let tiffData = imagetosend?.tiffRepresentation
 let imageRep = NSBitmapImageRep(data: tiffData!)
 let image_data = imageRep?.representation(using: .JPEG, properties: [:])
 print("Hi")

 let url = NSURL(string: "http://localhost:8080/getArt")

let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"


//define the multipart request type

request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")


let body = NSMutableData()

let mimetype = "image/png"

//define the data post parameter




body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(image_data!)
body.append("\r\n".data(using: String.Encoding.utf8)!)


request.httpBody = body as Data



let session = URLSession.shared


let task = session.dataTask(with: request as URLRequest) {
    (
    data, response, error) in

    guard let _:NSData = data as NSData?, let _:URLResponse = response  , error == nil else {
        print(error?.localizedDescription)
        return
    }

    let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
    print(dataString)

}

task.resume()

共有1个答案

刘野
2023-03-14

我用阿拉莫菲尔方法解决了这个问题。

Alamofire.request("YOUR URL", method: .post, parameters: parm, encoding: JSONEncoding.default).responseJSON(completionHandler: { json in
        // If you want to return json.
        print(json)
    })
 类似资料:
  • 我是vapor的初学者,我选择vapor 3-rc作为开始,因为它似乎打破了vapor 2的变化。不幸的是,目前还没有完整的文档。 我目前正在尝试将一个简单的txt文件从Postman上传到我的Vapor 3本地服务器。 这是我的路线 和我的控制器 首先,通过执行邮递员请求,服务器返回: 通过研究源代码和关于此的有限文档,我似乎应该声明一个解码器来支持多部分传入请求。 所以我做到了: 我使用For

  • 我得到以下错误 响应数据为空。我做错了什么,或者我在代码中遗漏了什么?

  • 问题内容: 我有以下POST请求表格(简化): 我尝试发送POST请求: 但它返回状态并带有以下注释: 请指出我的错误。我应该进行哪些更改才能使其正常工作? 问题答案: 您自己设置标题,包括边界。不要这样 会为您生成一个边界并将其设置在标头中,但是如果您 已经 设置了标头,那么生成的有效负载和标头将不匹配。只需将标题全部放下即可: 请注意,我还给了零件一个文件名(路径的基本名称)。 有关多部分PO

  • 我试图使用Vapor 1.5和Firebase遗留协议向Firebase Notifications API发出POST请求,但收到失败响应。 编辑通过邮递员发出请求失败,错误为“请求缺少身份验证密钥(FCM令牌)”

  • 问题内容: 我不想使用文件,但是只有django才需要发出POST请求。 就像发送请求一样。 问题答案: 结合使用urllib2和urllib中的方法即可解决问题。这是我使用这两种方法发布数据的方式: 是用于打开URL的方法。 将参数转换为百分比编码的字符串。

  • 问题内容: 在Apache Commons HttpClient的3.x版本中,可以进行multipart / form-data POST请求(2004年的示例)。不幸的是,这在HttpClient的4.0版本中不再可能。 对于我们的核心活动“ HTTP”,多部分内容超出了范围。我们很乐意使用由其他项目维护的多部分代码,但我对此一无所知。几年前,我们曾尝试将多部分代码移至commons编解码器,