Swift中文件和图片上传处理
前言:基于Alamofire4.5网络框架开发的Swift项目中上传文件和图片代码参考。
上传文件
extension HttpRequestService {typealias UploadDoneBlock = (_ dict:[String : Any]) -> Void//成功blockfunc uploadEcgFileWithGatherRecord(model :RecordModel, fileName : String, zipData : NSData, md5 : String, success:@escaping UploadDoneBlock, fail:@escaping FailedBlock) {let urlStr = HttpConfig.RequestUrlHeader.httpRequestUrlHeader + HttpConfig.RequestApi.uploadRecordApi//构造发送参数let parameters: Parameters = ["user_id":model.userId]//请求头let localToken = Tools.readFromUserDefault(key: localToken)!// 头部需要的内容包装let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// "fname" 这里是服务器对应好的字段formData.append(zipData as Data, withName: "fname", fileName: fileName, mimeType:"application/zip")//拼接参数for (key, value) in parameters {let v = value as! StringformData.append(v.data(using: String.Encoding.utf8)!, withName: key)}
// usingThreshold 指的是传入文件大小最大值}, usingThreshold: (50*1024*1024), to: URL.init(string: urlStr)!, method: HTTPMethod.post, headers: headers) { (encodingResult) inswitch encodingResult {case .success(let upload, _, _):upload.responseJSON { response inif let jsonValue = response.result.value {let json = JSON(jsonValue)print("上传记录json:\(json)")let code = json["code"].intif code == HttpConfig.ErrorCode.HttpOK {let dict = json["data"].dictionaryObjectsuccess(dict!) } else {fail("")}}}case .failure(_):self.networkErrorHint() // 网络错误处理 }}}
复制代码
图片上传
typealias UploadUserIconSuccess = (_ dict:[String : Any]) -> Void//成功blockfunc uploadUserIcon(fileName: String, imgData: NSData, success:@escaping UploadUserIconSuccess, fail:@escaping FailedBlock ) {let urlStr = HttpConfig.RequestUrlHeader.httpRequestUrlHeader + HttpConfig.RequestApi.uploadUserIconApi//请求头let localToken = Tools.readFromUserDefault(key: localToken)!// 头部需要的内容包装let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// 参数解释://withName:和后台服务器的name要一致 ;fileName:可以充分利用写成用户的id,但是格式要写对; mimeType:规定的,要上传其他格式可以自行百度查一下formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")//如果需要上传多个文件,就多添加几个append,或则for-in语句进行循环处理
// formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")
// formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")}, usingThreshold: (10*1024*1024), to: URL.init(string: urlStr)!, method: HTTPMethod.post, headers: headers) { (encodingResult) inswitch encodingResult {case .success(let upload, _, _):upload.responseJSON { response inif let jsonValue = response.result.value {let json = JSON(jsonValue)print("上传头像json:\(json)")let code = json["code"].intif code == HttpConfig.ErrorCode.HttpOK {let dict = json["data"].dictionaryObjectsuccess(dict!)} else {let msg = json["msg"].stringHudToast.toastError(error: msg!)}}}case .failure(_):self.networkErrorHint()}}}
复制代码
转载于:https://juejin.im/post/5d4d6a83e51d453b721475fa
Swift中文件和图片上传处理相关推荐
- 链接ftp,把文件或图片上传到ftp指定的文件夹中
/******************************************************************** * * * Filename : .java * Auth ...
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能...
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...
- vue项目中的h5图片上传(处理上传的时候图片被旋转的问题,并压缩图片大小)
vue的图片上传 这个页面实现的主要是实现创建球队功能,里面包含队徽,球队类型,球队名称,所属地址 这里除了图片上传还有一个地址的三级联动功能,这里我把这个页面都贴上来了.这个项目中使用vux作为ui ...
- JAVA项目中如何实现图片上传?
JAVA项目中实现图片上传 **前端div** <div class="layui-form-item"><label class="layui-for ...
- Asp.Net Core文件或图片上传
管理后台上传的图片或文件可能也需要在 Api 项目能够访问,考虑到文件的统一管理,后台的文件默认 是上传到 Api 项目里的. Web 项目里的配置文件 appsetting.json 中的 ApiS ...
- kindeditor java 上传图片_java中KindEditor本地图片上传与上传失败问题
此代码是最新版的 KindEditor 3.5.x 实现本地图片上传的方法,用于oschina即将改版的个人空间 KindEditor 要求的JSON格式如下: {"error": ...
- java 存储png文件_vue图片上传及java存储图片(亲测可用)
1.前言 在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交.单纯的上传文件,java的存储图片的方式也有局限性. 我知道的后端保存图片有两种方式:一种是直接存储 ...
- HTTP Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载
MIME 为数据格式标签:最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案. 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息. Conten ...
- python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传
1.下载.安装AutoIt V3 下载官网:https://www.autoitscript.com/site/autoit/downloads/ 2.AutoIt V3组件介绍 AutoIt Win ...
最新文章
- gatsby_将您的GraphCMS数据导入Gatsby
- linux和android开发链接
- 周末随笔 | 问好一个问题,有的放矢
- vim默认设置的配置
- Linux 命令(101)—— bc 命令
- 工厂利用计算机实现温度调节属于,工厂利用计算机系统实现温度调节、阀门开关,该应用属于()。A.过程控制B.数据处理C.科学计算D.C...
- Windows Phone 7 使用Perst数据库的Demo——流水账
- java实现读写分离
- HTTP缓慢拒绝服务攻击
- Proteus7.8 ISIS制图8个LED(针对初次使用者)
- 射频识别系统的组成及工作原理解析
- “华为”云桌面终端CT3200+显示器、键盘和鼠标
- APP消息推送-个推java端实现
- 用ruby写了一个简单的Gmail登陆和获取未读邮件(http协议)
- 下载3GPP协议的方法
- java bean ejb_EJB:企业JavaBean - 解道jdon
- GCN图卷积神经网络总结笔记
- starrocker关联hive外表
- Spring MVC过滤器-超类
- 2022年要面试的注意啦,Android面试题全网最全汇总
热门文章
- [蓝桥杯][算法提高VIP]A Careful Approach(全排列+二分)
- Ubuntu18.04下安装NFS详细步骤
- 【sklearn学习】降维算法PCA和SVD
- 同步电路出现异步清零可以吗_异步计数器 || 计数器的分类 ||异步二进制十进制|| 74290 8421 5421 || 数电...
- 疯子的算法总结12--倍增
- ST函数(ST表)RMQ O(1)查询 离线
- 从晶体管特性曲线看饱和问题(Z)
- MySQL 中 AUTO_INCREMENT 的“坑” --重复值问题
- angularjs directive 实例 详解
- python集群_使用Python集群文档