Alamofire +ObjectMapper模型: 上传音频。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Alamofire +ObjectMapper模型: 上传音频。相关的知识,希望对你有一定的参考价值。

import Foundation

import Alamofire


//上传音频 ,multipartFormData 上传。key = audio


extension HttpManager {

    /**

     音频文件

     

     - parameter audioData: 音频 Data

     - parameter success: 成功回调 audio model

     - parameter failure: 失败

     */

    class func uploadAudio(

        _ audioData: Data,

        recordTime: String,

        success:@escaping (_ audioModel: UploadAudioModel) ->Void,

        failure:@escaping (Void) ->Void)

    {

        let parameters = [

            "access_token": UserInstance.accessToken,

            "record_time": recordTime

        ]

        /*

        这里需要填写上传音频的 API

        */

        let uploadAudioURLString = ""

        

        Alamofire.upload(

            multipartFormData: { multipartFormData in

                multipartFormData.append(audioData, withName: "audio", fileName: "file", mimeType: "audio/AMR")

                for (key, value) in parameters {

                    multipartFormData.append(value!.data(using: String.Encoding.utf8)!, withName: key)

                }

            },

            to: uploadAudioURLString,

            encodingCompletion: { result in

                switch result {

                case .success(let upload, _, _):

                    upload.responseJSON { response in

                        //XCGLogger,TSLogger.swift

                        log.info("response:\(response)")

                        switch response.result {

                        case .success(let data):

                            /*

                             根据 JSON 返回格式,做好 UploadAudioModel key->value 映射, 这里只是个例子

                             */

                            let model: UploadAudioModel = TSMapper<UploadAudioModel>().map(JSONObject: data)!

                            success(model)

                        case .failure( _):

                            failure()

                        }

                    }

                case .failure(let encodingError):

                    debugPrint(encodingError)

                }

        })

        

    }

}


// 上传音频接口返回的图片 Model

//class UploadAudioModel : TSModelProtocol {

//    var audioId : String?

//    var duration : Int?

//    var audioURL : String?

//    var fileSize : Int?

//    var keyHash : String?

//    var recordTime : String?

//    

//    required init?(map: Map) {

//        

//    }

//    

//    func mapping(map: Map) {

//        audioId <- map["audio_id"]

//        audioURL <- map["audio_url"]

//        duration <- map["duration"]

//        keyHash <- map["key_hash"]

//        fileSize <- map["file_size"]

//        recordTime <- map["recordTime"]

//    }

//}




//使用的地方


/**

 *  异步上传音频文件, 然后上传成功后,把 model 值改掉

 *  因为还没有上传的 API,所以这个函数会返回错误  T.T

 

HttpManager.uploadAudio(uploadAmrData, recordTime: String(recordTime), success: {model in

    audioModel.keyHash = model.keyHash

    audioModel.audioURL = model.audioURL

    audioModel.duration = recordTime

}, failure: {

    

})

}

*/



以上是关于Alamofire +ObjectMapper模型: 上传音频。的主要内容,如果未能解决你的问题,请参考以下文章

Swift/Alamofire/ObjectMapper:忽略零值

Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本

Alamofire,Objectmapper,Realm:嵌套对象

在 Swift 中将 Alamofire 结果解析为对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)

AlamoFire + ObjectMapper,如何让函数获取 Mappable 类型的参数?

swift Alamofire+ObjectMapper——swift(学习九)