swift-Alamofire向服务器按参数传文件

Alamofire向服务器按参数传文件

网上很多资料都是只说怎么向服务器上传文件,而且版本也比较老,放到现在根本用不上了。有时不是单纯地传文件,是要带参数传一系列值,文件只是其中的一个。比如一个接口,需要你以键值对的形式上传3个值:key1-“aaa”;key2-“bbb”;key3-[图片]。其中前两个参数的值是字符类型的,第三个参数要求你传一个图片,那使用Alamofire要怎么操作呢?直接上代码:

Alamofire.upload(
         multipartFormData: { multipartFormData in
            for key in parmameters.keys{
               if key != "file"{
                  multipartFormData.append((parmameters[key] as! String).data(using: String.Encoding.utf8)!, withName: key)
               }else{
                  multipartFormData.append(parmameters[key] as! URL, withName: key, fileName: "passport.jpg", mimeType: "image")
               }
            }
      },
         to: url,
         encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):
               upload.responseString { response in
                  let str = response.result.value!
                  let entity=PassportEntity(JSONString: str)
                  if entity != nil{
                     finishedCallback(entity!)
                  }else{
                     finishedCallback("failure" as AnyObject)
                  }
               }
            case .failure(let encodingError):
               finishedCallback("failure" as AnyObject)
            }
      }
      )

其中,“PassportEntity”是我的一个自定义类,你们根据自己需要写。
关键是在这个参数:

multipartFormData: { multipartFormData in
            for key in parmameters.keys{
               if key != "file"{
                  multipartFormData.append((parmameters[key] as! String).data(using: String.Encoding.utf8)!, withName: key)
               }else{
                  multipartFormData.append(parmameters[key] as! URL, withName: key, fileName: "passport.jpg", mimeType: "image")
               }
            }
      }

以表单的方式,加上键值对的形式上传参数,withName对应的值就是你的key,append()方法的第一个参数就是该key对应的值,“parmameters”是我传入的键值对的字典([String:Any]类型),我上传图片采用的是:

 multipartFormData.append(parmameters[key] as! URL, withName: key, fileName: "passport.jpg", mimeType: "image")

传入文件路径即可,注意要在mimeType这个地方指定文件类型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值