前言:基于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中文件和图片上传处理相关推荐

  1. 链接ftp,把文件或图片上传到ftp指定的文件夹中

    /******************************************************************** *  * * Filename : .java * Auth ...

  2. 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能...

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...

  3. vue项目中的h5图片上传(处理上传的时候图片被旋转的问题,并压缩图片大小)

    vue的图片上传 这个页面实现的主要是实现创建球队功能,里面包含队徽,球队类型,球队名称,所属地址 这里除了图片上传还有一个地址的三级联动功能,这里我把这个页面都贴上来了.这个项目中使用vux作为ui ...

  4. JAVA项目中如何实现图片上传?

    JAVA项目中实现图片上传 **前端div** <div class="layui-form-item"><label class="layui-for ...

  5. Asp.Net Core文件或图片上传

    管理后台上传的图片或文件可能也需要在 Api 项目能够访问,考虑到文件的统一管理,后台的文件默认 是上传到 Api 项目里的. Web 项目里的配置文件 appsetting.json 中的 ApiS ...

  6. kindeditor java 上传图片_java中KindEditor本地图片上传与上传失败问题

    此代码是最新版的 KindEditor 3.5.x 实现本地图片上传的方法,用于oschina即将改版的个人空间 KindEditor 要求的JSON格式如下: {"error": ...

  7. java 存储png文件_vue图片上传及java存储图片(亲测可用)

    1.前言 在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交.单纯的上传文件,java的存储图片的方式也有局限性. 我知道的后端保存图片有两种方式:一种是直接存储 ...

  8. HTTP Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载

    MIME 为数据格式标签:最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案. 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息. Conten ...

  9. python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传

    1.下载.安装AutoIt V3 下载官网:https://www.autoitscript.com/site/autoit/downloads/ 2.AutoIt V3组件介绍 AutoIt Win ...

最新文章

  1. gatsby_将您的GraphCMS数据导入Gatsby
  2. linux和android开发链接
  3. 周末随笔 | 问好一个问题,有的放矢
  4. vim默认设置的配置
  5. Linux 命令(101)—— bc 命令
  6. 工厂利用计算机实现温度调节属于,工厂利用计算机系统实现温度调节、阀门开关,该应用属于()。A.过程控制B.数据处理C.科学计算D.C...
  7. Windows Phone 7 使用Perst数据库的Demo——流水账
  8. java实现读写分离
  9. HTTP缓慢拒绝服务攻击
  10. Proteus7.8 ISIS制图8个LED(针对初次使用者)
  11. 射频识别系统的组成及工作原理解析
  12. “华为”云桌面终端CT3200+显示器、键盘和鼠标
  13. APP消息推送-个推java端实现
  14. 用ruby写了一个简单的Gmail登陆和获取未读邮件(http协议)
  15. 下载3GPP协议的方法
  16. java bean ejb_EJB:企业JavaBean - 解道jdon
  17. GCN图卷积神经网络总结笔记
  18. starrocker关联hive外表
  19. Spring MVC过滤器-超类
  20. 2022年要面试的注意啦,Android面试题全网最全汇总

热门文章

  1. [蓝桥杯][算法提高VIP]A Careful Approach(全排列+二分)
  2. Ubuntu18.04下安装NFS详细步骤
  3. 【sklearn学习】降维算法PCA和SVD
  4. 同步电路出现异步清零可以吗_异步计数器 || 计数器的分类 ||异步二进制十进制|| 74290 8421 5421 || 数电...
  5. 疯子的算法总结12--倍增
  6. ST函数(ST表)RMQ O(1)查询 离线
  7. 从晶体管特性曲线看饱和问题(Z)
  8. MySQL 中 AUTO_INCREMENT 的“坑” --重复值问题
  9. angularjs directive 实例 详解
  10. python集群_使用Python集群文档