Загрузка изображения из ImageVIew на удаленный сервер - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь загрузить изображение из ImageView на удаленный сервер.

Это мой код:

func subir_imagen(){

        let image = self.foto.image
        let imgData = image!.jpegData(compressionQuality: 1)!

         let parameters = ["name": "jogua"] //Optional for extra parameter

        Alamofire.upload(multipartFormData: { multipartFormData in
                multipartFormData.append(imgData, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
                for (key, value) in parameters {
                        multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
                    } //Optional for extra parameters
            },
        to:"https://.../subir_foto_dispositivo.php")
        { (result) in
            switch result {
            case .success(let upload, _, _):

                upload.uploadProgress(closure: { (progress) in
                    print("Upload Progress: \(progress.fractionCompleted)")
                })

                upload.responseJSON { response in
                    print(response)
                }

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

    }

Это файл subir_foto_dispositivo. php:

 // Save the image file
 move_uploaded_file($_FILES["image"]["tmp_name"], $_FILES["image"]["name"]);

 // Send some dummy result back to the iOS app
 $result = array();
 $result["user"] = $user;
 $result["message"] = "Success!";
 $result["files"] = $_FILES;
 $result["post"] = $_POST;
 echo json_encode($result);

И это вывод в отладчике при загрузке изображения:

Upload Progress: 0.21640112366409928
Upload Progress: 0.4362101390394442
Upload Progress: 0.6628349378372804
Upload Progress: 0.8485650361001688
Upload Progress: 1.0
SUCCESS: {
    files =     {
        fileset =         {
            error = 0;
            name = "file.jpg";
            size = 9615058;
            "tmp_name" = "/tmp/phpH6Au4W";
            type = "image/jpg";
        };
    };
    message = "Success!";
    post =     {
        name = jogua;
    };
    user = "<null>";
}

Я не получаю никаких предупреждений или ошибок, но изображение не загружено на сервер, по крайней мере, я не могу найти его в папке.

Думаю, мне что-то не хватает.

1 Ответ

1 голос
/ 07 мая 2020
func requestPostURLForUploadImage(success:@escaping (Dictionary<String,Any>) -> Void, failure:@escaping (Error) -> Void){
    var image = self.foto.image
    var strUrl = "http://103.51.0.xxx/papp_name/index.php/api/"  // your server url here where image needs to upload

    Alamofire.upload(multipartFormData: { multipartFormData in

        let imgData = image.jpegData(compressionQuality: 0.2)
        multipartFormData.append(imgData, withName: "image_one",fileName:"uploadimageName", mimeType: "image/jpg")

    }, to: strUrl)
    { (result) in
        switch result {
        case .success(let upload, _ ,_ ):
            upload.uploadProgress(closure: { (progress) in
                print("Upload Progress: \(progress.fractionCompleted)")
            })
            upload.responseJSON { response in
                let resJson = response.result.value
                if resJson != nil{
                    let res = resJson as! Dictionary<String, String>
                    if res.count > 0 {
                        success(resJson as! Dictionary<String, String>)
                    }
                }
                else {
                    print("Response not found")
                }
            }
        case .failure(let error):
            failure(error)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...