Alamofire 视频或图片上传 或普通上传封装

本文介绍如何使用Alamofire进行GET、POST请求及文件上传,并提供了具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Alamofire 这个第三方不解释了,就是好。我上来就想贴我的代码~~ 上车

 普通的get 或post 上传需要put 或其它的可以继续往枚举里添加:

如果需求可能变更最好再封装一层,修改起来就比较灵活了,再给个默认值,爽~

   func  requstData(_ type: MethodType,
                        urlString : String,
                        params : [String : AnyObject],
                        sucess: @escaping(_ response : AnyObject)->(),
                        fail : @escaping(_ error :Error)->() ) {
        
        let  requestType = type == .POST ? HTTPMethod.post : HTTPMethod.get
        
        print("param----->%@",params)
        
        Alamofire.request(
            
            urlString,
            method: requestType,

            parameters: params).responseJSON {
                
           (response) in
        
            switch response.result {
                
               case .success( _ ):
                
                if  let jsonValue = response.result.value as? [String: AnyObject] {
                    
                   print("value--->\(jsonValue),url--->\(urlString)")
                    
                   sucess(jsonValue as AnyObject)
                  
                }
                
               case  .failure(let error):
                
                fail(error)
                PublicTool.showAlert(error.localizedDescription)
                print("normalRequesterror--->\(error)")
                print("response\(String.init(data: response.data!, encoding: String.Encoding.utf8))")

        }
     }
  }

 //视频或图片上传,根据需求可以把fileName,进度条提上来封装,图片和视频可以考虑压缩

   internal func uploadVideo(urlString :String,

                             params:[String:AnyObject]?,

                             data : Data?,

                             img: UIImage,

                             success :@escaping (_ response : [String : AnyObject])->(),

                             failture : @escaping (_ error : Error)->()) {

            

            assert(data != nil"the vido needed to be upload can not be nil")

    

        let headers = ["content-type":"multipart/form-data"]

    

           Alamofire.upload(

            

            multipartFormData: {

                

                (mutipartFormData) in

            

           let imageData = UIImageJPEGRepresentation(img, 1.0)

            

            mutipartFormData.append(imageData!,

                                    withName: "img",

                                    fileName: "img.png",

                                    mimeType: "image/jpg/png/jpeg")

            

          mutipartFormData.append(data!,

                                   withName: "video",

                                   fileName: "video.mp4",

                                   mimeType: "video/mp4")


            for (key, value) in params! {

                

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

            }

            

           }, to: urlString,

              

              method:.post,

              

              headers:headers) {

                

                (encodingReult) in

            

                switch encodingReult {

                    

                case .success(let upload, __):

                    

                    upload.responseJSON { response in

                        

                        if let value = response.result.value as? [StringAnyObject]{

                            

                            success(value)

                            

                            print("value---->\(value)")

                        }

                        

                        guard  let data = response.data  else{

                            

                            return

                        }

                        

                        let utf8Text = String(data: data , encoding: .utf8)

                        

                        print("return data" + utf8Text!)

                        

                    }

                  //   upload.uploadProgress { progress in  
                  //      progressClosure(progress.fractionCompleted)
                  //      print("Upload Progress: \(progress.fractionCompleted)")     
                  //  }

                case .failure(let encodingError):


                    failture(encodingError)

                }

            }

         }

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值