Swift 如何使用alamofire上传转换为base64的图像?

Swift 如何使用alamofire上传转换为base64的图像?,swift,xcode,swift4,xcode10,Swift,Xcode,Swift4,Xcode10,我正在使用Alamofire管理我应用程序中的网络 我用于将图像上载到服务器的API需要两个参数,即图像名称和图像数据(base64字符串) 我知道如何使用此代码将图像转换为base64 class func convertImageToBase64(image: UIImage) -> String { let imageData = UIImagePNGRepresentation(image)! return imageData.base64EncodedSt

我正在使用Alamofire管理我应用程序中的网络 我用于将图像上载到服务器的API需要两个参数,即图像名称和图像数据(base64字符串) 我知道如何使用此代码将图像转换为base64

    class func convertImageToBase64(image: UIImage) -> String {
    let imageData = UIImagePNGRepresentation(image)!
    return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)
}
但我不知道怎么得到图像名?! 第二,如果我得到了图像名称,如何将图像上传到服务器,有人能解释上传图像的Alamofire代码吗

这是我的API

Web方法:

准材料 { “文件名”:“hydangeas.jpg”, “ImageData”:“base64string” }

注: 文件名:选择照片的文件名 ImageData:Base 64字符串表示Imge字节

提前感谢您

步骤01:

在顶部导入照片库

import Photos
像这样使用UIImagePickerController()获取图像

var base64Image: String?
var fileName: String?
 override func viewDidLoad() {
        super.viewDidLoad()
        let image = UIImagePickerController()
        image.delegate = self
        image.sourceType = UIImagePickerController.SourceType.photoLibrary

    }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {

        if let asset = info[UIImagePickerController.InfoKey.phAsset] as? PHAsset {
                if let fileName = (asset.value(forKey: "filename")) as? String {
                    self.fileName = fileName
                }
            }


         base64Image = convertImageToBase64(image: image)

        }

        self.dismiss(animated: true, completion: nil)
    }

func convertImageToBase64(image: UIImage) -> String {
        let imageData = image.pngData()!
        return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)
    }
{ "FileName":"\(fileName)", "ImageData":"\(base64Image)" }
步骤02: 在参数中设置base64Image,如下所示

var base64Image: String?
var fileName: String?
 override func viewDidLoad() {
        super.viewDidLoad()
        let image = UIImagePickerController()
        image.delegate = self
        image.sourceType = UIImagePickerController.SourceType.photoLibrary

    }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {

        if let asset = info[UIImagePickerController.InfoKey.phAsset] as? PHAsset {
                if let fileName = (asset.value(forKey: "filename")) as? String {
                    self.fileName = fileName
                }
            }


         base64Image = convertImageToBase64(image: image)

        }

        self.dismiss(animated: true, completion: nil)
    }

func convertImageToBase64(image: UIImage) -> String {
        let imageData = image.pngData()!
        return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)
    }
{ "FileName":"\(fileName)", "ImageData":"\(base64Image)" }

但我需要以jpg的形式上传图像我怎么做?尝试你的代码,但出现红色错误->使用未声明的类型“PHAsset”在下面导入UIKit添加导入照片检查此代码在我的项目中工作,在我构建项目时清理构建你的项目我遇到此错误->键入“UIImagePickerController.InfoKey”(又名“NSString”)没有成员“阶段集”