使用通常的方式将数据上传到 Alamofire,例如发布其他数据

Posted

技术标签:

【中文标题】使用通常的方式将数据上传到 Alamofire,例如发布其他数据【英文标题】:Upload Data to Alamofire Using the Usual Way like Posting other data 【发布时间】:2015-09-13 06:21:28 【问题描述】:
    let parameters = [
        "profile_picture" : "\(profilePictureData)",
    ]

    Alamofire.request(.POST, UPDATE_PROFILE_PICTURE_URL + "token=\(userToken)", parameters: parameters, encoding: .JSON, headers: AUTHENTICATION_HEADER).response  (request, response, data, errorType) -> Void in

        if(data != nil) 
            let responseStr:NSString = NSString(data:data!, encoding:NSUTF8StringEncoding)!
            print(responseStr);

            let resultObject: APIResults = APIResults(JSONDecoder(data!));
            let responseCode: Int = Int(resultObject.code!)!;

            if(responseCode == 200) 
                succeeded = true;

            
        
    

到目前为止,这是我的代码,我正在尝试将 NSData 的 profilePictureData 发布到服务器,就像我通常发送字符串或整数的方式一样。我将 profilePictureData 放到 body 参数中。这总是失败并且服务器返回错误。

我应该如何将我的图像数据发送到服务器?

请帮忙。谢谢

【问题讨论】:

【参考方案1】:

以此为模型。只需相应地编辑它。

Alamofire.upload(.POST,
        URLString: "https://example.com/api/v1/users/\(user_id)/profile_pic.json?auth_token=\(auth_token)",
        multipartFormData:  multipartFormData in
            multipartFormData.appendBodyPart(data: imageData, name: "avatar", fileName: "avatar_img.png", mimeType: "image/png")
        ,
        encodingCompletion:  encodingResult in

            switch encodingResult 
                case .Success (let upload, _, _):
                    upload.responseJSON  request, response, data, error in

                    // Do whatever 

                     
                case .Failure (let encodingError):
                    //Realistically, I don't expect this to ever trigger, but I guess if the user uses some very weird image format...
            

        )

【讨论】:

嗨,我应该把我的标题授权放在哪里?谢谢 对不起,我找到了header参数。感谢您的帮助

以上是关于使用通常的方式将数据上传到 Alamofire,例如发布其他数据的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 使用 Alamofire 将数据上传到服务器

使用 PHP 在 Swift 5 中使用 Alamofire 接收图像上传

如何使用 alamofire 上传多个文件并显示进度?

Alamofire v4,Swift v3 将 Sqlite 文件上传到域

使用 Alamofire 上传具有 base64String 编码的多个图像的数组

通过 API 将带有 Alamofire 的 STL 文件上传到 Octoprint