请求的接口

参数图

一般用户修改头像都是修改的头像的连接,这里我们后台是直接上传的文件,所以我就基于Alamofire封装了一个带有文件参数的网络请求方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//MARK:-----------file请求-------------//
class func requestFile(urlString:String,params:[String:Any], method:HTTPMethod,success:@escaping(_ response:[String:Any])->()){
//这里是接口和参数
let url = "\(BASE_URL)\(api_common_mid)\(urlString)"
print("\(url)\n\(params)")

//
Alamofire.upload(multipartFormData: { (formdata) in

//这里因为不同接口的参数名肯定不一样,所以就用你传的参数名。
for (key,value) in params{

//然后formdata只接受Data所以这里转换一下
if let content = value as? String {
formdata.append(content.data(using: String.Encoding.utf8)!, withName: key)
}

// 如果是图片的话吧图片转化成Data
if let content = value as? UIImage{
formdata.append(content.getData(), withName: key)
}

}

}, to: url) { (result) in
switch result {
case .success(let upload, _, _):
upload.responseJSON { response in
//自己封装的处理请求返回的结果
self.responseApply(response, success: success)
}
case .failure(let encodingError):
print(encodingError)
}
}
}

调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NetworkTool.requestFile(urlString: api_my_modification,params: ["uid":"1","username":"xxxx","file":UIImage(named:"xxx.png")], method: .post) { (response) in
if let res = response["data"] as? Int{
if res == 1 {
showSuccess("修改成功")
self.ischangedImage = false
//跟新用户信息
self.update_request()
return
}
showError("修改失败")
}else{
showError("修改失败")
}
}
注:图片转Data有可能会为空,解决办法是把要转换的图片重新绘制下就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extension UIImage{
//MARK:-----------图片转data-------------//
func getData() -> Data{
let data = UIImageJPEGRepresentation(self.getNewImage(), 0.9)
return data!
}
//MARK:-----------重新绘制一下图形-------------//
fileprivate func getNewImage() -> UIImage{
let w = self.size.width
let h = self.size.height

UIGraphicsBeginImageContext(self.size)
self.draw(in: CGRect(x: 0, y: 0, width: w, height: h))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
}
相关文章
评论
分享
  • 删除视频背景音乐、添加视频背景音乐

    删除视频背景音乐删除视频的背景音乐其实很简单,把视频数据导入进来,然后我们的视频数据其实是有两条轨道一条是音频,另外一条是视频。由于数据的tracks(轨道包含多条音视频)是只读的,所以在这里重新创建一个混合器,然后把数据源的视频轨道...

    删除视频背景音乐、添加视频背景音乐
  • AAC音频转WAV

    将aac编码格式的音频转为lpcm编码的音频,转出来的音频会比原来大个10倍左右.1234567891011121314151617181920212223242526272829303132333435363738394041424...

    AAC音频转WAV
  • Message Filtter Extension 短信过滤

    手机最近老是收到各种垃圾短信,于是想要自己写一个app来过滤垃圾短信,找到了Message Filtter Extension 1.首先创建一个空的工程,然后创建好了之后添加一个target。1选中工程->Editor-&g...

    Message Filtter Extension 短信过滤
  • Shell删除所有苹果证书

    123456789101112131415161718#!/bin/bashexpired=$(security find-identity)if [ -z "$expired" ] #-z判断字符串长度是否为0 为0返回tru...

    Shell删除所有苹果证书
  • Swift语言国际化

    第一步在工程设置里面添加对应国际化的语言 第二步添加Localizble.strings 第三步选择Localizble.strings文件,然后选择Localize…选择需要的语言,选择完了之后你就会看见刚才创建的Localizbl...

    Swift语言国际化
  • Docker Nginx 静态资源部署

    1. 查看docker仓库中的nginx命令1docker search nginx 2.为选定需要pull到系统重的官方Nginx镜像1docker pull nginx 这个过程需要时间,需要耐心等待一下。看到这个图就是成功了。 ...

    Docker Nginx 静态资源部署
  • Nginx vue打包部署

    最近在弄vue的项目,完了需要打包部署到服务器,然后之前也没有弄过自己在这边一边查资料一边琢磨怎么弄。幸运的是花了一天半的时间还搞定了。 1.在conf.d文件下添加一个新的配置文件,12345678910111213141516...

    Nginx vue打包部署
  • SCP文件上传下载

    从服务器获取文件1scp -p 8080 root@192.168.1.1:/usr/temp/file.txt /Desktop/ 上传文件到服务器1scp -p 8080 /Desktop/uploadfile root@192....

    SCP文件上传下载
  • 音频剪切、合成、淡入淡出

    音频剪切1.音频剪切比较简单传入音频文件和剪切的时间段就可以了12345678910111213141516171819202122232425/** 初始化输出文件路径 */ NSString *url = "音频源文件路径"...

    音频剪切、合成、淡入淡出
  • swift 做一个答题的功能

    实现的效果是:1.点击答案,判断正确,如果选择的答案错误显示出正确的答案。然后可以浏览上一题的信息。2.可以查看上一题的答题情况。看下效果图吧 思路:1.看看题的模型吧,我这里是用一个数组来装的一个类,然后点击下一题的时候数组索引+...

    swift 做一个答题的功能