Как загрузить изображение на сервер из приложения recat, используя php? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть приложение, созданное с использованием собственного кода, и я хочу разрешить пользователям загружать изображения.Я застрял с серверной частью.Я не могу понять, как получить изображение, отправленное по реакции native (данные формы) и сохранить его на сервере (переместить изображение в файл на сервере и сохранить его местоположение в базе данных SQL), используя php.

Я искал много решений, но ни одно из них не охватывает мою ситуацию.

Код моего внешнего интерфейса приведен ниже.С помощью функции uploadImageAsync я отправляю данные изображения на upload.php

async function uploadImageAsync(uri) {
  let apiUrl = 'upload.php';



  let uriParts = uri.split('.');
  let fileType = uriParts[uriParts.length - 1];

  let formData = new FormData();
  formData.append('photo', {
    uri,
    name: `photo.${fileType}`,
    type: `image/${fileType}`,
  });

  let options = {
    method: 'POST',
    body: formData,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'multipart/form-data',
    },
  };

  return fetch(apiUrl, options);
}

Так что реальный вопрос в том, что делать в upload.php?

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

Вот как я делаю это с HTML-формой:

HTML:

<input type="file"  name="img">

PHP

if(file_exists($_FILES['img']['tmp_name']) && is_uploaded_file($_FILES['img']['tmp_name']))
    {
        $target = md5(time());
        $target_dir = "photos/";
        $target_file =  $target.basename($_FILES["img"]["name"]);
        $uploadOk = 1;
        $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
        $check = getimagesize($_FILES["img"]["tmp_name"]);
        if($check != false) {

            $uploadOk = 1;
        } 
        else{
            echo "File is not an image.";
            $uploadOk = 0;
        }

        if ($_FILES["img"]["size"] > 50000000) {
        $uploadOk = 0;
        echo "Sorry, your file is too large.";
        }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
        }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your image was not uploaded."; 
    // if everything is ok, try to upload file
        } else {

         $target_file = strtr($target_file1, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $target_file = preg_replace('/([^.a-z0-9]+)/i', '_', $target_file);

        if (!move_uploaded_file($_FILES["img"]["tmp_name"], $target_dir. $target_file)) {

            echo "Sorry, there was an error uploading your file. Please retry.";
        }
        }
    }

Итак, как я могу использовать "$ _FILES ['img'] ['...']" с данными формы, которые я отправляю, реагируя.Это действительно сбивает с толку меня

...