【发布时间】:2018-10-23 22:07:04
【问题描述】:
我是编程和 iOS 开发的新手。我需要使用 Alamofire 多部分表单数据上传图像,但我还需要输入基本身份验证标头。
在这个线程Alamofire 4.0 Upload MultipartFormData Header,好像和我的问题差不多,代码是这样上传的
Alamofire.upload(multipartFormData:{ multipartFormData in
multipartFormData.append(unicornImageURL, withName: "unicorn")
multipartFormData.append(rainbowImageURL, withName: "rainbow")},
usingThreshold:UInt64.init(),
to:"https://httpbin.org/post",
method:.post,
headers:["Authorization": "auth_token"],
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
但我很困惑如何放置基本身份验证(即用户名和密码)标头。我也很困惑我应该把图像数据放在哪里。
我找到了另一个与我的问题相似的线程。这是...How to upload MultipartFormData with authentication using Alamofire,建议的解决方案是以下代码:
let username = "username"
let password = "password"
let credentialData = "\(username):\(password)".dataUsingEncoding(NSUTF8StringEncoding)!
let base64Credentials = credentialData.base64EncodedStringWithOptions([])
let headers = ["Authorization": base64Credentials]
Alamofire.upload(
.POST,
"https://rilbits.com/supersafe/photo/upload",
headers: headers,
multipartFormData: { multipartFormData in
let data = "default".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
multipartFormData.appendBodyPart(data: data, name: "_formname")
multipartFormData.appendBodyPart(fileURL: fileURL, name: "photo")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseString { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
)
但是在修复到 swift 4.1 之后它给出了一个错误:
你能帮我解决问题吗?在此先感谢:)
【问题讨论】:
标签: ios swift file-upload alamofire multipartform-data