当前位置: 首页 > news >正文

Alamofire上传文件

先看下请求的接口

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

//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)
            }
        }
    }
复制代码

调用

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有可能会为空,解决办法是把要转换的图片重新绘制下就行了
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!
    }
}
复制代码

相关文章:

  • django第一个app,3
  • 坦克大战1.0版
  • 【Html5】-- 塔台管制
  • 国内域名国内服务器,不备案解决80端口不开放方法
  • python
  • Java与Unix时间戳的相互转换
  • Intellij Idea编译项目下的.java文件时的编码问题
  • Windows上SSH服务器的配置以及客户端的连接
  • UIScrollView中使用AutoLayout
  • mysql LINESTRING ,POINT 类型操作
  • 读Git Pro2的笔记
  • Vue.js简介及指令
  • 全面分析 Spring 的编程式事务管理及声明式事务管理
  • jeesite优化
  • 统计数据库大小的方法
  • CEF与代理
  • Java到底能干嘛?
  • Meteor的表单提交:Form
  • PAT A1092
  • React Native移动开发实战-3-实现页面间的数据传递
  • spring + angular 实现导出excel
  • Vim Clutch | 面向脚踏板编程……
  • 初探 Vue 生命周期和钩子函数
  • 从0到1:PostCSS 插件开发最佳实践
  • 分类模型——Logistics Regression
  • 给新手的新浪微博 SDK 集成教程【一】
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 批量截取pdf文件
  • 如何优雅地使用 Sublime Text
  • 入口文件开始,分析Vue源码实现
  • 使用Swoole加速Laravel(正式环境中)
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据库巡检项
  • 昨天1024程序员节,我故意写了个死循环~
  • ​人工智能书单(数学基础篇)
  • # Apache SeaTunnel 究竟是什么?
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (2)Java 简介
  • (笔试题)合法字符串
  • (二十四)Flask之flask-session组件
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (五)c52学习之旅-静态数码管
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net 垃圾回收机制原理(二)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET构架之我见
  • .NET开发人员必知的八个网站
  • .NET中winform传递参数至Url并获得返回值或文件
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @JsonFormat与@DateTimeFormat注解的使用
  • @RequestBody与@ModelAttribute