我在我的iOS应用程序中使用Azure移动服务连接到我的后端。我要做的是将图像作为multipart / form-data上传到我的后端。
我做了以下事情:
创建一个“body”作为NSMutableData,其中包含multipart / form-data(包括我要上传的图像数据)
let image_data = UIImagePNGRepresentation(image)!
let body = NSMutableData()
let fname = "test.png"
let mimetype = "image/png"
//define rest of multipart/form-data with image data embedded
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"test\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("hi\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Type: \(mimetype)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(image_data)
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
使用.invokeAPI(自定义API呼叫)将数据上传到我的api-end点
Azure.client.invokeAPI("UploadProfileImage", body: body, HTTPMethod: "POST", parameters: nil, headers: ["Content-Type": "multipart/form-data; boundary=\(boundary)"]) { (result, response, error) -> Void in
if error == nil {
print("SUCCESs! wOO")
print(result)
}else{
print("ERROR!: \(error?.localizedDescription)")
print("response: \(response)")
print("result: \(result)")
}
}
*正在从此函数接收“boundary”变量:
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().UUIDString)"
}
然而我不断得到的错误是“提供的项目无效”。这让我抓狂,因为我确信我的多部分/表格数据是正确的,并且我正在以正确的方式上传它,我只是不明白它为什么不接受数据。
任何帮助都将受到高度赞赏!