Alamofire и PHP Загрузить изображения - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь загрузить изображения , выбранные из галереи IPhone, я могу отправить запрос, но изображения никогда не попадают на мой веб-сервер.Я не знаю, если проблема по запросу или по моему сценарию в php.

Этот swift код:

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)
                        }
    })
}

И мой php код:

<?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);
 ?>

Ответ из php скрипта:

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

Заранее спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Похоже, ваши имена параметров не совпадают:

Имя, которое вы используете в коде Swift, это "image []", но внутри кода PHP оно совершенно другое.

Этодолжно быть что-то вроде

<?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");
         }
    }
...