Swift-网络上传请求之Multipart

本文记录了在Swift中进行Multipart网络上传图片的代码和注释,适用于iOS应用开发中头像和内容图片的上传操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权所有,请勿转载!

项目中需要完成图片的上传,用于头像和帖子内容的丰富,直接贴代码和注释备忘:

func uploadImg(img:UIImage,urldomain:String,success:(num:Int,ok:Bool,String)->Void)
    {
        let picurl = "接受图片的url地址"
        //图片data(这里我进行了压缩,可以省略)
        let PicData = UIImageJPEGRepresentation(img, 0.5)
        //这里是headers  
        let pichead = ["Host":"\(urldomain):8080",
            "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
            "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Origin":"http://\(urldomain):8080",
            "Content-Type":"multipart/form-data; boundary=----WebKitFormBoundaryh4V4mNJ7hB0dOlYA",
            "Referer":"引用地址",
            "Cookie":"所持的cookies"]

        //这里是body部分
        let plain = DBManager.shareInstance().AutoUUID()
        let encrypt = DataEncoding.Endcode_AES_ECB(plain)


        Alamofire.upload(.POST, picurl, headers: pichead, multipartFormData: { (MultipartFormData) -> Void in
            //将准备好的body数据添加到MultiPart
            MultipartFormData.appendBodyPart(data: plain.dataUsingEncoding(NSUTF8StringEncoding)!, name: "plain")
            MultipartFormData.appendBodyPart(data: encrypt.dataUsingEncoding(NSUTF8StringEncoding)!, name: "encrypt")

            //将图片数据装入Multipart 上传流
            MultipartFormData.appendBodyPart(stream: NSInputStream.init(data: PicData!), length: UInt64((PicData?.arrayOfBytes().count)!), name: "pic", fileName: "\(img.description).jpg", mimeType: "image/jpeg")

            }, encodingMemoryThreshold: 100) { (Result:Manager.MultipartFormDataEncodingResult) -> Void in

                switch Result
                {
                case .Success( let request, let streamingFromDisk, let streamFileURL):

                    request.responseJSON(completionHandler: { (response:Response<AnyObject, NSError>) -> Void in


                        let str = String(data: response.data!, encoding: NSUTF8StringEncoding)
                        print("-----上传图片界面----------------")

                        let json = JSON.init(data: response.data!)
                        print("json ------------\(json)")

                        if json["flag"].boolValue == true
                        {
                            let content = json["content"]
                            let imgurl = "http://\(urldomain):8080/MISSPicPro\(content)"
                            print(imgurl)
                            success(num: Global_Send_num,ok: true,imgurl)
                        }
                        else
                        {
                            //失败传空
                            success(num: Global_Send_num,ok: false,"")

                        }

                    })

                    break
                case .Failure(let Error):
                    //失败传空
                    success(num:Global_Send_num,ok: false,"")

                    break

                default:

                    break
                }

        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值