对成员'upload(_:to:method:headers:interceptor :)的含糊不清的引用 [英] Ambiguous reference to member 'upload(_:to:method:headers:interceptor:)'
本文介绍了对成员'upload(_:to:method:headers:interceptor :)的含糊不清的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 Alamofire
按下按钮上传图像,但在
I am uploading an image on button press using Alamofire
, but it show an ERROR at
$ b中显示错误$ b
AF.upload(multipartFormData:{
MultipartFormData方法行
AF.upload(multipartFormData: {
MultipartFormData line of method
(注意:Alamofire 5.0更新后,Alamofire.upload更改为AF.upload)
(Note : Alamofire.upload is change to AF.upload After Alamofire 5.0 Update)
@IBAction func btnUploadImage(_ sender: UIButton) {
let uploadDict = ["user_id":getUserId] as [String:String]
AF.upload(multipartFormData: { MultipartFormData in
let image :Data = UIImageJPEGRepresentation(self.uploadImg.image!, 1.0)!
MultipartFormData.append(image, withName: "image" , fileName: "image.jpeg" , mimeType: "image/jpeg")
for(key,value) in uploadDict{
MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)}
}, to: "http://XXXXXXXXXXXXXXXX/uploadImage", encodingCompletion: {
EncodingResult in
switch EncodingResult{
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
print("ERROR RESPONSE: \(encodingError)")
} })
//此代码的查看控制器
//View Controller for this code
import UIKit
import Alamofire
class updateVC: UIViewController, UIImagePickerControllerDelegate,UINavigationControllerDelegate {
//MARK:- OUTLETS
@IBOutlet weak var tFeditName: UITextField!
@IBOutlet weak var tFusername: UITextField!
@IBOutlet weak var tFemail: UITextField!
@IBOutlet weak var uploadImg: UIImageView!
@IBOutlet weak var tVeditAddress: UITextView!
//MARK:- DECLARATIONS
var imagePicker = UIImagePickerController()
var editName = String()
var editUserName = String()
var editEmail = String()
var editImage = UIImage()
var editAddress = String()
var getUserId = String()
//MARK:- LIFE CYCLE
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
tFeditName.text = editName
tFusername.text = editUserName
tFemail.text = editEmail
uploadImg.image = editImage
tVeditAddress.text = editAddress
}
//MARK:- CUSTOM FUNCTIONS
func postJSON() {
let param = ["fullname":tFeditName.text!,"username":tFusername.text!,"email":tFemail.text!,"address":tVeditAddress.text!,"user_id":getUserId] as NSDictionary
AF.request("http://XXXXXXXXXXXXXXXXXXXX/updatedetails", method: .post, parameters: param as? Parameters, encoding: URLEncoding.default).responseJSON { response in
switch response.result{
case .success(let json):
print(json)
DispatchQueue.main.async {
print(param)
}
case.failure(let Error):
print(Error)
}
}
}
//ImageViewPicker
func openCamera()
{
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerController.SourceType.camera
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
else
{
let alert = UIAlertController(title: "Warning", message: "You don't have camera", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
func openGallery()
{
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.allowsEditing = true
imagePicker.sourceType = UIImagePickerController.SourceType.photoLibrary
self.present(imagePicker, animated: true, completion: nil)
}
else
{
let alert = UIAlertController(title: "Warning", message: "You don't have permission to access gallery.", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
uploadImg.image = pickedImage
}
picker.dismiss(animated: true, completion: nil)
}
//MARK:- ACTIONS
@IBAction func btnSelectImage(_ sender: UIButton) {
let alert = UIAlertController(title: "Choose Image", message: nil, preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Camera", style: .default, handler: { _ in
self.openCamera()
}))
alert.addAction(UIAlertAction(title: "Gallery", style: .default, handler: { _ in
self.openGallery()
}))
alert.addAction(UIAlertAction.init(title: "Cancel", style: .cancel, handler: nil))
self.present(alert, animated: true, completion: nil)
}
@IBAction func btnUploadImage(_ sender: UIButton) {
let image: UIImage? = self.uploadImg.image
let uploadDict = ["user_id":getUserId] as [String:String]
AF.upload(multipartFormData: { MultipartFormData in
let image :Data = (image?.jpegData(compressionQuality: 1))!
MultipartFormData.append(image, withName: "image" , fileName: "image.jpeg" , mimeType: "image/jpeg")
for(key,value) in uploadDict{
MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)}
}, to: "http://XXXXXXXXXXXXXXXX/uploadImage", encodingCompletion: {
EncodingResult in
switch EncodingResult{
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
print("ERROR RESPONSE: \(encodingError)")
} })
}
@IBAction func btnUpdateDetails(_ sender: UIButton) {
postJSON()
self.navigationController?.popViewController(animated: true)
}
}
推荐答案
我刚刚用
pod 'Alamofire', '~> 5.0.0-beta.5'
//示例代码
let image: UIImage? = self.uploadImg.image;
let uploadDict = ["user_id":getUserId] as [String:String]
Alamofire.upload(multipartFormData: { MultipartFormData in
let image :Data = (image?.jpegData(compressionQuality: 1))!
MultipartFormData.append(image, withName: "image" , fileName: "image.jpeg" , mimeType: "image/jpeg")
for(key,value) in uploadDict{
MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)}
}, to: "http://XXXXXXXXXXXXXXXX/uploadImage", encodingCompletion: {
EncodingResult in
switch EncodingResult{
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint("SUCCESS RESPONSE: \(response)")
}
case .failure(let encodingError):
print("ERROR RESPONSE: \(encodingError)")
} })
这篇关于对成员'upload(_:to:method:headers:interceptor :)的含糊不清的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文