问题描述
如何使用Alamofire上传 MultipartFormData
并进行身份验证?我不明白的部分是放在哪里 .authenticate(用户名:用户名,密码:密码)。
?我通常使用 MultipartFormData
上传图片:
How to upload MultipartFormData
with authentication using Alamofire? The part that I don't understand is where to put .authenticate(user: username, password: password).
? This is how I usually upload pictures using MultipartFormData
:
Alamofire.upload(
.POST, "https://myExampleUrl/photo/upload", headers: headers, multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(data: "default".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, 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)
}
}
)
我认为可以添加身份验证过程进入标题?
I think it's possible to add authentication process into headers?
推荐答案
没有太多时间来探索 rilbits.com的API
。当我访问Safari中的地址时,我收到以下错误:
Haven't had much time to explore the API for rilbits.com
. When I visited the address in Safari, I got the following error:
Please add 'Authorization' or 'X-Access-Token' header to your request
这表明有两种选择:
- 首先登录并获取访问令牌,然后您可以使用上传请求
- 发送基本
授权
标题以及上传请求。
- Login first and get back an access token, which you can then use the for the upload request
- Send a basic
Authorization
header along with the upload request.
以下是发送<$ c $的方法c>授权标题(第二个选项):
Here's how you can send the Authorization
header (second option):
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)
}
}
)
完整披露:
- 授权代码取自Alamofire的
- 我没有测试上面的代码
这篇关于如何使用Alamofire上传带有身份验证的MultipartFormData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!