【问题标题】:Upload base64 image to server上传base64图片到服务器
【发布时间】:2018-04-17 14:04:31
【问题描述】:

我正在使用 AlamofireswiftyJson 我想将图片作为 base64 上传到服务器,我使用此代码上传我的图片

class func uploadMultipleAdvertisementImage(photos: UIImage, completion: @escaping (_ error: Error?, _ sucess: Bool, _ image_id: Int)-> Void) {

let url = URLs.uploadImages

var images = [Data]()
Alamofire.upload(multipartFormData: { (form: MultipartFormData) in



   if let data = UIImageJPEGRepresentation(photos , 0.5) {
        form.append(data, withName: "images", fileName: "photo.jpeg", mimeType: "image/jpeg")
    }

}, usingThreshold: SessionManager.multipartFormDataEncodingMemoryThreshold, to: url, method: .post, headers: nil) { (result: SessionManager.MultipartFormDataEncodingResult) in

    switch result {
    case .failure(let error):
        print(error)
        completion(error, false, 0)

    case .success(request: let upload, streamingFromDisk: _, streamFileURL: _):

        upload.uploadProgress(closure: { (progress: Progress) in
            print(progress)
        })
            .responseJSON(completionHandler: { (response: DataResponse<Any>) in

                switch response.result
                {
                case .failure(let error):
                    print(error)
                    completion(error, false, 0)

                case .success(let value):
                    let json = JSON(value)
                    print(json)
                    if(json["msg"] == "image uploaded successfully") {
                        let image_id = json["image_id"].int ?? 0
                        print("hiiiiiiiiii", image_id)
                        completion(nil, true, image_id)
                    }
                }

            })
    }

 }
}

但我想将它作为base 64上传,我该怎么办?

【问题讨论】:

    标签: ios swift alamofire swift4


    【解决方案1】:

    您必须将 UIImage 转换为您的网站可以读取的格式,例如使用 base 64 编码之前的 jpeg。

    let jpegCompressionQuality: CGFloat = 0.9 // Set this to whatever suits your purpose
    if let base64String = UIImageJPEGRepresentation(chosenImage, jpegCompressionQuality)?.base64EncodedString() {
        // Upload base64String to your database
    }
    

    请参阅 Apple 文档以了解 UIImageJPEGRepresentationData

    【讨论】:

    • 您可以考虑改用base64EncodedData() ,这样您就不需要额外的字符串到数据的转换。
    • multipart不能追加字符串!
    【解决方案2】:

    Data 有一个函数可以将自身的 base64 表示返回为另一个 Data。无需转换为String 并返回。

    查看Data.base64EncodedData() 的文档

    if let data = UIImageJPEGRepresentation(photos, 0.5)?.base64EncodedData() {
        form.append(data, withName: "images", fileName: "photo.jpeg", mimeType: "image/jpeg")
    }
    

    【讨论】:

      【解决方案3】:

      你可以像这样将图像转换为base64

      let encodingOptions = NSData.Base64EncodingOptions(rawValue: 0)
      let encodedImageData = pickedImage.base64EncodedString(options: encodingOptions)
      

      然后在您的请求中使用encodedImageData 作为参数

      【讨论】:

        猜你喜欢
        • 2012-04-16
        • 2011-06-01
        相关资源
        最近更新 更多