Загрузка изображений PHP работает на локальном хосте, но не работает на сервере - PullRequest
0 голосов
/ 19 февраля 2019

Загрузка изображения работает нормально на локальном хосте, но не работает на действующем сервере. В HTML-форме отображается сообщение об успешном завершении работы после отправки формы, но в базе данных нет данных. Я пытался напечатать ошибку, но ошибки нет.Мой код:

    <?php
include './login_validity.php';

$res = '';
$mes = '';
$img = NULL;
if (isset($_POST['submit'])) {
    $name = $_POST['title'];
    $des = $_POST['description'];
    $shrt_detail = $_POST['shrt_description'];
    $date = $_POST['date'];
    $show_status = $_POST['is_show'];
    $detail = $des;


    //------------------image upload---------------------
    if (!empty($_FILES["fileToUpload"]["name"])) {

      $target_dir = "uploads/";
      $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

      $uploadOk = 1;
      $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
      // Check if image file is a actual image or fake image

       $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
       if ($check !== false) {
              $uploadOk = 1;
       } else {
              $_SESSION['message'] = "File is not an image.";
              $uploadOk = 0;
       }


      // Allow certain file formats
       if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "tif") 
       {
        $_SESSION['message'] = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
       }
      // Check if $uploadOk is set to 0 by an error
       if ($uploadOk == 0) {
        $_SESSION['message'] = "Sorry, your file was not uploaded.";
       // if everything is ok, try to upload file
       } else {
         if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            $_SESSION['message'] = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";

         } else {
            $_SESSION['message'] = "Sorry, there was an error uploading your file.";
         }
      }
      $img = $target_file;
     }

    $query = "INSERT INTO slider (title,image,shrt_description,description,date,is_show) VALUES ('$name','$img','$shrt_detail','$detail','$date','$show_status')";
    $res = $conn->query($query); 
    $mes = "Successfully Added";
}
?>

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

1 Ответ

0 голосов
/ 19 февраля 2019

Я думаю, что ваша проблема здесь:

$res = '';
$mes = '';
$img = NULL;
if (isset($_POST['submit'])) {
    $name = $_POST['title'];
    $des = $_POST['description'];
    $shrt_detail = $_POST['shrt_description'];
    $date = $_POST['date'];
    $show_status = $_POST['is_show'];
    $detail = $des;

Вы должны изменить его на:

$res = '';
$mes = '';
if (isset($_POST['submit'])) {
    $name = $_POST['title'];
    $des = $_POST['description'];
    $shrt_detail = $_POST['shrt_description'];
    $date = $_POST['date'];
    $show_status = $_POST['is_show'];
    $detail = $des;
    $img = $_FILES['fileToUpload']['name'];

Если вы делаете $img = NULL;, вы не получаете его.Вам нужно сделать $img = $_FILES['fileToUpload']['name'];, чтобы получить отправленные данные из формы

PS - Где вы объявляете переменную $conn?Я думаю, что вы должны включить ваше соединение в этот документ, иначе он не отправит данные в вашу базу данных.

...