Ios 如何使用Alamofire上传具有身份验证的MultipartFormData
如何使用Alamofire通过身份验证上传Ios 如何使用Alamofire上传具有身份验证的MultipartFormData,ios,swift,alamofire,Ios,Swift,Alamofire,如何使用Alamofire通过身份验证上传多部分数据?我不明白的部分是在哪里放置。身份验证(用户:用户名,密码:密码)。?这就是我通常使用MultipartFormData上传图片的方式: Alamofire.upload( .POST, "https://myExampleUrl/photo/upload", headers: headers, multipartFormData: { multipartFormData in multipartForm
多部分数据
?我不明白的部分是在哪里放置。身份验证(用户:用户名,密码:密码)。
?这就是我通常使用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)
}
}
)
我认为可以将身份验证过程添加到标题中?没有太多时间来探索
rilbits.com
的API。当我访问Safari中的地址时,我得到以下错误:
Please add 'Authorization' or 'X-Access-Token' header to your request
这为您提供了两种选择:
授权
标题与上载请求一起发送授权
标题(第二个选项):
全面披露:
- 授权码是从阿拉莫菲尔的
- 我没有测试上面的代码
Alamofire.upload
在这里并不真正上传:它只将多部分请求写入文件
当您在编码完成
中的上传
上调用.responseX
时,实际执行请求。就是
upload.authenticate(user: username, password: password)
.responseString { ...}
你应该做你想做的
如果使用头进行身份验证,则设置
Alamofire.upload
的headers
参数仍应有效;据我所知,它应该将标题转发到upload
。您可以通过将upload
转储到控制台来验证这一点,您还可以像处理正常请求一样将头设置为upload
。我通常先让用户进行身份验证,然后在头中发送会话令牌。这在swift 3.0中不起作用。对swift 3.0有任何建议吗?这在最新版本(4.0)的Alamofire中不再有效。因为上载函数中的头参数不再存在。有什么想法吗?阿拉莫菲尔4中的音频文件怎么样我尝试以以下形式发送音频文件:multipartFormData.append(audioLocalPath,名称为:“file”,文件名为“file”,mimeType为“application/octet stream”),但出现以下错误:multipartncodingfailed(Alamofire.AFError.multipartncodingfaileurereason.bodypartfilenotreachable错误(file:///var/mobile/Containers/....... /Documents/item.mp3,NSUnderlyingError=0x16049100{Error Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”}}}),哪里有问题?-请求错误或音频路径错误?@JayVDiyk在4.4.0,似乎参数又回来了。
upload.authenticate(user: username, password: password)
.responseString { ...}