Swift Alamofire上传heic格式问题

项目利用Alamofire上传文件,之前同事没注意考虑格式,造成图片上传不了问题。
上传文件格式如下:

let mimeTypes = ["png": "image/png",
                                 "jpg": "image/jpg",
                                 "jpeg": "image/jpeg",
                                 "heic": "image/heic",
                                 "heif": "image/heif",
                                 "webp": "image/webp",
                                 "tif": "image/tif",
                                 "gif": "image/gif",
                                 "mp4": "video/mp4",
                                 "mov": "video/mov"]

刚开始后端同事不帮我们处理.heic格式的文件,那么就需要我们自己处理了,自己转一下格式再上传:
代码如下:

//其他格式也是一样
if  suffix == "heic" || suffix == "heif" {
                    guard let newFileName = fileName.components(separatedBy: ".").first else {
                        break
                    }
                    let file1Data = try! Data(contentsOf: filePathUrl)
                    if let image: UIImage = UIImage(data: file1Data as Data) {
                        let twoData = image.jpegData(compressionQuality : 1.0)! as NSData
                        let newFileName = newFileName + ".jpeg"
                        formData.append(twoData as Data, withName: "files", fileName: newFileName , mimeType: "image/jpeg")
                        print("打印一下heic的图片名称----\(newFileName)")
                    }
                }else{
                    formData.append(filePathUrl, withName: "files", fileName: fileName, mimeType: fileMimeType)
                }

完整代码:

 Alamofire.upload(multipartFormData: { (formData: MultipartFormData) -> Void in
            for filePathUrl in paths {

                guard let fileName = filePathUrl.absoluteString.components(separatedBy: "/").last,
                    let suffix = fileName.components(separatedBy: ".").last?.lowercased() else {
                    debugPrint("上传文件:获取文件名错误")
                    break
                }
                let mimeTypes = ["png": "image/png",
                                 "jpg": "image/jpg",
                                 "jpeg": "image/jpeg",
                                 "heic": "image/heic",
                                 "heif": "image/heif",
                                 "webp": "image/webp",
                                 "tif": "image/tif",
                                 "gif": "image/gif",
                                 "mp4": "video/mp4",
                                 "mov": "video/mov"]
                guard let fileMimeType = mimeTypes[suffix] else {
                    self.log.error("上传文件:获取mimeType错误")
                    print("上传文件:获取mimeType错误")
                    break
                }
                print("打印一下heic的图片名称----\(fileName)")
               // formData.append(filePathUrl, withName: "files", fileName: fileName, mimeType: fileMimeType)
                if  suffix == "heic" || suffix == "heif" {
                    guard let newFileName = fileName.components(separatedBy: ".").first else {
                        break
                    }
                    let file1Data = try! Data(contentsOf: filePathUrl)
                    if let image: UIImage = UIImage(data: file1Data as Data) {
                        let twoData = image.jpegData(compressionQuality : 1.0)! as NSData
                        let newFileName = newFileName + ".jpeg"
                        formData.append(twoData as Data, withName: "files", fileName: newFileName , mimeType: "image/jpeg")
                        print("打印一下heic的图片名称----\(newFileName)")
                    }
                }else{
                    formData.append(filePathUrl, withName: "files", fileName: fileName, mimeType: fileMimeType)
                }
            }

            for (key, value) in body {
                formData.append(value.data(using: .utf8)!, withName: key)
            }

        }, usingThreshold: 5, to: url, method: .post, headers: header, encodingCompletion: { result in
            switch result {
       }
        })

这样就能自己转格式上传文件了

END.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明似水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值