json - 无法在 Swift 中使用 POST 方法 multipart/form-data 上传图像和添加参数
问题描述
以下是此 API 的 URL 要求:http: //itaag-env-1.ap-south-1.elasticbeanstalk.com/editprofile/
根据这个答案Upload image with multipart form-data iOS in Swift
我试过下面的代码,但我无法添加parameters
到 POST 请求,也无法调用uploadImage
viewdidload 中的方法
这是代码:
func uploadImage(paramName: String, fileName: String, image: UIImage) {
let url = URL(string: "http://itaag-env-1.ap-south-1.elasticbeanstalk.com/editprofile/")
let boundary = UUID().uuidString
let deviceId: String = "HardcodeDEVICEIDforiTaag222"
let headers = ["deviceid": "deviceId","userType": "personal","key": "5fe42fb3b54543a0bab5667cf96526f8"]
let parameters: [String: Any] = ["firstName":"Satish", "lastName":"Madhavarapu","gender":"male", "ageGroup":"40-50"]
let session = URLSession.shared
var urlRequest = URLRequest(url: url!)
urlRequest.httpMethod = "POST"
urlRequest.allHTTPHeaderFields = headers as! [String : String]
// Set Content-Type Header to multipart/form-data, this is equivalent to submitting form data with file upload in a web browser
// And the boundary is also set here
urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
var data = Data()
// Add the image data to the raw http request data
data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!)
data.append("Content-Disposition: form-data; name=\"\(paramName)\"; filename=\"\(fileName)\"\r\n".data(using: .utf8)!)
data.append("Content-Type: image/png\r\n\r\n".data(using: .utf8)!)
data.append(image.pngData()!)
data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)
// Send a POST request to the URL, with the data we created earlier
session.uploadTask(with: urlRequest, from: data, completionHandler: { responseData, response, error in
if error == nil {
let jsonData = try? JSONSerialization.jsonObject(with: responseData!, options: .allowFragments)
if let json = jsonData as? [String: Any] {
print(json)
}
}
}).resume()
}
在上面的代码中,我无法将参数添加let parameters: [String: Any] = ["firstName":"Satish", "lastName":"Madhavarapu","gender":"male", "ageGroup":"40-50"]
到urlRequest
以及如何调用uploadImageviewDidLoad
请帮我写代码
解决方案
推荐阅读
- python - 用两个 slug 反转一个 url
- javascript - 为什么本地存储的条件不起作用?
- python - 根据另一个列表对元组列表进行排序
- python - 熊猫:如果组的大小大于平均值,则丢弃行
- android - 带有 SAML 的 Android Cognito (O365)
- python - 两个列表之间的Python多重条件
- html - HTML/CSS 跨浏览器对齐问题
- node.js - MongoDB Aggregate:首先按现有值排序
- node.js - 如何从 Node.js 访问 shell 变量值?
- firebase - Firebase 控制台不加载用户列表