91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Alamofire +ObjectMapper模型: 上傳音頻。

發布時間:2020-07-11 19:12:32 來源:網絡 閱讀:507 作者:iOS技術者 欄目:開發技術

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: {

    

})

}

*/



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

全椒县| 留坝县| 淮阳县| 通道| 九台市| 集安市| 晋江市| 轮台县| 尼玛县| 朝阳市| 洱源县| 南阳市| 禄劝| 建瓯市| 达日县| 芦溪县| 南投县| 富阳市| 玉林市| 延吉市| 稻城县| 札达县| 和田县| 阿瓦提县| 龙岩市| 弋阳县| 虞城县| 靖江市| 福安市| 军事| 永寿县| 林周县| 全椒县| 娱乐| 洛阳市| 九江市| 门源| 府谷县| 油尖旺区| 日喀则市| 原阳县|