【问题标题】:HOW TO POST IMAGE FILE WITH ALAMOFIRE 5.5如何使用 ALAMOFIRE 5.5 发布图像文件
【发布时间】:2022-02-13 16:08:04
【问题描述】:

我想 POST 使用 alamofire 5.5 的多部分图像文件 我成功地用这个最近的 alamofire 实现了 GET 方法,但被 POST 方法卡住了。

TIA

【问题讨论】:

  • POST 方法有什么问题让你卡住了?
  • @mkrieger1 我的意思是我不知道它的最新代码,因为它不能与旧 alamofire 的旧代码一起使用

标签: swift post alamofire multipartform-data multipart


【解决方案1】:

上传图片到服务器我们需要使用多部分请求,你可以使用下面的代码sn-p将图片上传到服务器。

 func uploadImage(imgType:String,imgData:Data,imageName:String){
    // params to send additional data, for eg. AccessToken or userUserId
    let params = ["userID":"userId","accessToken":"your accessToken"]
    print(params)
    AF.upload(multipartFormData: { multiPart in
        for (key,keyValue) in params{
            if let keyData = keyValue.data(using: .utf8){
                multiPart.append(keyData, withName: key)
            }
        }
        
        multiPart.append(imgData, withName: "key",fileName: imageName,mimeType: "image/*")
    }, to: "Your URL",headers: []).responseJSON { apiResponse in
        
        switch apiResponse.result{
        case .success(_):
            let apiDictionary = apiResponse.value as? [String:Any]
            print("apiResponse --- \(apiDictionary)")
        case .failure(_):
            print("got an error")
        }
    }
}

【讨论】:

  • 感谢您的帮助,所以参数就像标题一样?
  • params 变量不是标头,它们是附加数据,例如,如果您想通过使用相同的端点来更新用户名、电子邮件和个人资料图片,那么您可以使用它。如果您只想更新照片,则不需要参数。如果要定义标头,则 AF.upload() 方法中有一个名为“headers”的单独参数,它是 http 标头列表,您可以使用它来发送标头。如果您没有得到它,请随时询问。
  • 好的,我想使用标题,所以其余代码与您上面的评论相同吗?只需在 multipart.append 中添加标题就可以了吗?
  • 而fileName是imgData的字符串?
  • 是的,AF.upload()方法中有一个header参数。只需添加它,您就可以开始了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2017-08-15
  • 2018-09-11
  • 2017-09-05
相关资源
最近更新 更多