我是 iOS 应用程序开发的新手。我正在尝试从选定的图像路径或图像扩展名中获取图像的 mimetype,但我不知道如何获取它,以及当我将图像附加到 multipatformdata 时,我收到类似“实例成员”的错误append' 不能用于类型 'MultipartFormData';您的意思是使用这种类型的值吗?”。如果有人帮助我将图像发送到服务器,那就太好了。预先感谢。我在下面提到了我的代码,为了保存文件路径和文件名,我使用了一个空字符串。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:
if var imgUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL{
let imgName = imgUrl.lastPathComponent
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
let localPath = documentDirectory?.appending(imgName)
var image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
let data = image.pngData()! as NSData
data.write(toFile: localPath!, atomically: true)
//let imageData = NSData(contentsOfFile: localPath!)!
var photoURL = URL.init(fileURLWithPath: localPath!)//NSURL(fileURLWithPath: localPath!)
print(photoURL)
filename = photoURL.lastPathComponent
fileextension = photoURL.pathExtension // get your file extension
img.image = image
}
let APPDEL = UIApplication.shared.delegate as! AppDelegate
APPDEL.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
//将图像和参数发送到服务器的按钮操作
@IBAction func updatedetails(_ sender: Any) {
let imageobj = img.image!
let data = imageobj.pngData()
let acce:String = UserDefaults.standard.string(forKey: "access")!
print(acce)
let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)"]
// let userData:Data = try! JSONSerialization.data(withJSONObject: postParameters)
let ImageData = imageobj.jpegData(compressionQuality: 0.5)
Alamofire.upload(multipartFormData: { (multiFormData) in
MultipartFormData.append(ImageData!, withName: photoURL, fileName: filename, mimeType: "image/jpeg")
for (key, value) in Parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "name")
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "password")
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "password_confirmation")
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "city")
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "state")
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: "address")
}
}, to: Constants.Userdetailsapi,method:.post,
headers:headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
print(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
}