如何使用Alamofire将SwiftUI图像上传到后端

时间:2020-06-09 00:09:40

标签: swift swiftui alamofire

正如标题所述,我很好奇如何使用Alamofire将SwiftUI的图片上传到后端。我遇到的每个代码示例和教程都依赖于利用UIImage,但是我正在SwiftUI中工作,它不使用UIImage。

这是我在此处(upload image from multipart-from-data using Alamofire '~> 5.0.0-beta.3')所找到的功能,并且正在尝试使其适用于我的用例:

func uploadPhoto(
    url: String,
    image: Image,
    params: [String : Any],
    header: [String:String]) {


    let httpHeaders = HTTPHeaders(header)
    AF.upload(multipartFormData: { multiPart in
        for p in params {
            multiPart.append("\(p.value)".data(using: String.Encoding.utf8)!, withName: p.key)
        }
       multiPart.append(image.jpegData(compressionQuality: 0.4)!, withName: "avatar", fileName: "file.jpg", mimeType: "image/jpg")
    }, to: url, method: .post, headers: httpHeaders)
        .responseJSON{ response  in
        switch response.result {
        case .success(let resut):
            print("upload success result: \(resut)")
        case .failure(let err):
            print("upload err: \(err)")
        }
    }
}

但是语句image.jpegData(compressionQuality: 0.4)!给我错误Value of type 'Image' has no member 'jpegData'

一些研究告诉我,这是由于我试图使用SwiftUI的Image数据类型而不是UIKit的UIImage。由于UI内的相关情况,我更喜欢使用Image数据类型。

1 个答案:

答案 0 :(得分:2)

SwiftUI import numpy as np import scipy.io as sio test = sio.loadmat('Y7.mat') data=np.zeros((600,600)) data[:,:]=test 是一个视图,您需要数据。 Image是数据,因此请单独使用以将其显示在UIImage中并上传到数据库中。

这是一个示例(使用伪代码):

Image