2 votes

Alamofire et PHP : télécharger des images

J'essaie de télécharger des images sélectionné à partir de la galerie de l'IPhone, je peux envoyer la demande, mais les images n'arrivent jamais sur mon serveur web. Je ne sais pas si le problème est sur la requête ou sur mon script en php.

Este rapide code :

func enviarImg(){
    let imageParamName = "image"
    let parameters = ["chave": "valor"]

    Alamofire.upload(multipartFormData: { multipartFormData in
        // import image to request

        for imageData in self.imagens {
            let data = UIImageJPEGRepresentation(imageData, 1)

            multipartFormData.append(data!, withName: "\(imageParamName)[]", fileName: "\(Date().timeIntervalSince1970).jpeg", mimeType: "image/jpeg")
        }
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
    },
                     to: url,
                     encodingCompletion: { encodingResult in
                        switch encodingResult {
                            case .success(let upload, _, _):
                                upload.responseJSON { response in

                                    print("success", response.result.value as Any)

                            }
                            case .failure(let encodingError):
                                print(encodingError)
                        }
    })
}

Et mon php code :

<?php

     $i = 0;
     $result = array();

     while ($i <= 2){

        move_uploaded_file($_FILES[$i]["tmp_name"], $_FILES[$i]["name"]);

        $result["files"] = $_FILES[$i]["name"];

        $i++;

     }

     $result["message"] = "Success!";
     $result["post"] = $_POST;
     echo json_encode($result);
 ?>

El réponse de php script :

success Optional({
  files = "<null>";
  message = "Success!";
  post =     (
  );
})

Merci d'avance !

2voto

Alex Points 2659

Il semble que les noms de vos paramètres ne correspondent pas :

Le nom que vous utilisez dans le code Swift est "image[]", mais dans le code PHP, c'est complètement différent.

Cela devrait être quelque chose comme

<?php
    $uploads_dir = '/uploads';
    foreach ($_FILES["image"]["error"] as $key => $error) {
         if ($error == UPLOAD_ERR_OK) {
             $tmp_name = $_FILES["image"]["tmp_name"][$key];

             $name = basename($_FILES["image"]["name"][$key]);
             move_uploaded_file($tmp_name, "$uploads_dir/$name");
         }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X