正如标题所述,我很好奇如何使用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数据类型。
答案 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