我正在做以下内容上传带参数的PNG文件:
Alamofire.upload(
multipartFormData: { multipartFormData in
multipartFormData.append(UIImagePNGRepresentation(tempImage!)!, withName: "file", fileName: "picture.png", mimeType: "image/png")
// Send parameters
multipartFormData.append((UserDefaults.standard.value(forKey: Email) as! String).data(using: .utf8)!, withName: "email")
multipartFormData.append("png".data(using: .utf8)!, withName: "type")
},
to: "user/picture",
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
self.removeSpinnerFromView()
print("ERROR RESPONSE: \(encodingError)")
}
}
)
Run Code Online (Sandbox Code Playgroud)
问题是在我的服务器上我没有看到email和type表单字段.我按照在线发布的示例进行了操作.有什么我应该做的不同吗?
编辑
如果我删除我放置的部分:
multipartFormData.append(UIImagePNGRepresentation(tempImage!)!, withName: "file", fileName: "picture.png", mimeType: "image/png")
Run Code Online (Sandbox Code Playgroud)
然后包括参数.否则,我认为这是Alamofire 4.0.1中的一个错误.
我尝试了很多解决方案。我得到了一些,但他们正在objective c code某个地方使用。我只需要在swift 4.2没有任何第三方的情况下(例如Alamofire)的解决方案objective c。使用class 可以很好地工作。
我已经能够仅使用标头,其他参数和图像发出POST请求,如下所示:
多部分表单(图像,参数,标题),快速与Alamofire一起发布请求
func sendFile(
urlPath:String,
fileName:String,
data:NSData,
completionHandler: (NSURLResponse!, NSData!, NSError!) -> Void){
var url: NSURL = NSURL(string: urlPath)!
var request1: NSMutableURLRequest = NSMutableURLRequest(URL: url)
request1.HTTPMethod = "POST"
let boundary = generateBoundary()
let fullData = photoDataToFormData(data,boundary:boundary,fileName:fileName)
request1.setValue("multipart/form-data; boundary=" + boundary,
forHTTPHeaderField: "Content-Type")
// REQUIRED!
request1.setValue(String(fullData.length), forHTTPHeaderField: "Content-Length")
request1.HTTPBody = fullData
request1.HTTPShouldHandleCookies = false
let queue:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(
request1,
queue: queue, …Run Code Online (Sandbox Code Playgroud)