如何使用 Alamofire 上传带有身份验证的 MultipartFormData

2023-11-30

如何上传MultipartFormData使用 Alamofire 进行身份验证?我不明白的部分是放在哪里.authenticate(user: username, password: password).?这就是我通常使用的上传图片的方式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)
            }
        }
    )

我认为可以将身份验证过程添加到标头中吗?


没有太多时间去探索 APIrilbits.com。当我在Safari中访问该地址时,出现以下错误:

Please add 'Authorization' or 'X-Access-Token' header to your request 

这为您建议了 2 个选项:

  1. 首先登录并取回访问令牌,然后您可以将其用于上传请求
  2. 发送基本信息Authorization标头以及上传请求。

您可以通过以下方式发送Authorization标题(第二个选项):

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 中解除readme
  • 我没有测试上面的代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Alamofire 上传带有身份验证的 MultipartFormData 的相关文章

随机推荐