如何在 Swift / Alamofire 中使用 multipartFormData?

Posted

技术标签:

【中文标题】如何在 Swift / Alamofire 中使用 multipartFormData?【英文标题】:How can i use multipartFormData in Swift / Alamofire? 【发布时间】:2017-03-07 06:06:47 【问题描述】:
upload(.POST, isEdit == true ? mainURL+URLS.UpdateLicense.rawValue : mainURL+URLS.AddLicense.rawValue, multipartFormData: 
        multipartFormData in

 if let imageData = UIImageJPEGRepresentation(self.selectdImage, 1) 
            multipartFormData.appendBodyPart(data: imageData, name:   "image", fileName: "image.jpeg", mimeType: "image/jpeg")

我想在字符串中附加正文部分,但我找不到任何可以在此正文部分附加字符串的方法。它只需要数据。但我的参数是一个字符串,我必须将它作为字符串而不是数据传递。

【问题讨论】:

感谢 sahil 编辑我的代码 @SohilR.Memon 我想用这个多部分数据附加字符串参数。 发布你想要传递的参数。 参数 = ["data":[ "vehicle_id": vehicalData!.vehicleId, "puc_expire_date":dateStr, "puc_serial_number":txtLicenceNo.text!] ] 【参考方案1】:

试试这个:

Swift 2.0

multipartFormData.appendBodyPart(data: imageData.dataUsingEncoding(NSUTF8StringEncoding)!, name: "image")

Swift 3.0

 multipartFormData.append(imageData(using: String.Encoding.utf8)!, withName: "image")

【讨论】:

【参考方案2】:

这是我项目中的代码。希望对你有帮助

var parameters: [String: String] = [
        "Tag" : tagName,
        "Title" : title,
        "Content" : content,
        "TypePost" : "0",
        "CreatedAt" : "\(Date())"
    ]

for (key, value) in parameters 
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        

【讨论】:

【参考方案3】:

您想上传带有其他参数的UIImage,那么这里是如何实现的!

if let imageData = UIImageJPEGRepresentation(image, 1) 
    multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png")


for (key, value) in parameters 
     multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)

您需要区分 UIImage 和其他 String 参数。

如果您仍然遇到问题,请告诉我。

【讨论】:

以上是关于如何在 Swift / Alamofire 中使用 multipartFormData?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中使用alamofire上传图库图片

如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire

如何在 Swift 中使用 Alamofire 读取本地 JSON

如何在 Swift 3 中使用 Alamofire 4 解析这个 json?

如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?

如何让 Freddy 在 Swift 中使用 AlamoFire?