J'essaie de télécharger le fichier image sur mon serveur. L'écran ci-dessous montre l'appel par le facteur.Télécharger le fichier image à partir de l'application Swift
Avec KEY:"image" et Valeur:123.png [fichier image] dans le corps form-data.
Je veux mettre en œuvre la même chose dans mon application avec rapide. J'ai essayé une solution différente mais dint trouver une bonne solution.
Je suis une image de sélection avec l'aide de UIImagePicker:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismiss(animated: true, completion: nil)
uploadImage(image: image!, url: "profile_image/")
}
J'appelle la fonction uploadImage télécharger l'image.
func uploadImage(image: UIImage, url: String) {
let urlString = "http://example.com/path/"+url
guard let url = URL(string: urlString) else { return }
let request = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
let token = UserDefaults.standard.object(forKey: "token") as? String
request.addValue("Token "+token!, forHTTPHeaderField: "Authorization")
let imageData = UIImagePNGRepresentation(image)!.base64EncodedData()
//let postString = "image=\(imageData))"
//request.httpBody = postString.data(using: .utf8)
let imgDict = ["image": imageData]
do {
let jsonBody = try JSONEncoder().encode(imgDict)
print(jsonBody)
request.httpBody = jsonBody
} catch let jsonError {
print(" Parsing Error: "+jsonError.localizedDescription)
}
URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
if error != nil {
print("Image upload API Error: "+error!.localizedDescription)
}
guard let data = data else { return }
do {
print(data)
let responseData = try JSONDecoder().decode(BasicResponseParameter.self, from: data)
print(responseData)
if responseData.success {
print("Image uploaded")
}
else {
print("Image upload API Failed : "+responseData.message!)
DispatchQueue.main.async(execute: {
popAlert(title: "FAILED", message: responseData.message!, owner:self)
})
}
} catch let jsonError {
print("Image upload API JSON Error :"+jsonError.localizedDescription)
}
}.resume()
}
Toute aide appréciée.
Remerciez vous beaucoup Lamar pour répondre :), j'ai encodé l'image avec .base64EncodedData(), im obtenir "Les données n'ont pas pu être lues parce que ce n'est pas dans le bon format." erreur –
Lamar, je suis inquiet si j'envoie KEY & VALUE correctement. La clé et la valeur sont-elles dans le bon format/manière/manière? @Lamar –
avez-vous correctement déplié votre image? – Lamar