Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Alamofire上传具有身份验证的MultipartFormData_Ios_Swift_Alamofire - Fatal编程技术网

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

Ios 如何使用Alamofire上传具有身份验证的MultipartFormData,ios,swift,alamofire,Ios,Swift,Alamofire,如何使用Alamofire通过身份验证上传多部分数据?我不明白的部分是在哪里放置。身份验证(用户:用户名,密码:密码)。?这就是我通常使用MultipartFormData上传图片的方式: Alamofire.upload( .POST, "https://myExampleUrl/photo/upload", headers: headers, multipartFormData: { multipartFormData in multipartForm

如何使用Alamofire通过身份验证上传
多部分数据
?我不明白的部分是在哪里放置
。身份验证(用户:用户名,密码:密码)。
?这就是我通常使用
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 { ...}