Проблема с загрузкой фотографий на сервер и в базу данных - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с загрузкой фотографий на мой сайт.

Я получаю последнее сообщение об ошибке («Пожалуйста, выберите файл для загрузки») в строке $fileName = basename($_FILES["file"]["name"]);, и нет вставки в базу данных или загрузки на сервер.

Мне интересно, может ли быть проблема с моей вставкой, так как я пытаюсь вставить имя файла, а также URL-адрес, выполнив 'images /' плюс имя файла. Все изображения должны быть загружены в каталог изображений, поэтому я хочу убедиться, что URL всегда имеет «images /» спереди.

Я не уверен, что здесь может пойти не так, но, может быть, я что-то упускаю

Вот форма и скрипт php:

<form action="uploadImage.php" method="post" enctype="multipart/form-data">
  <div class="form-group">
    <label for="formControl">Upload Image</label>
    <input type="file" class="form-control-file" id="formControl">
    <input type="submit" name="fileUpload">
  </div>
</form>

$statusMsg = '';

// File upload path
$targetDir = "images/";
$fileName = basename($_FILES["file"]["name"]);
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);


if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
    // Allow certain file formats
    $allowTypes = array('jpg','png','jpeg','gif','pdf');
    if(in_array($fileType, $allowTypes)){
        // Upload file to server
        if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
            // Insert image file name into database
            $insert = $mysqlConn->query("INSERT into images (image_name, url) VALUES ('".$fileName."', 'images/".$fileName."'");
            if($insert){
                $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
            }else{
                $statusMsg = "File upload failed, please try again.";
            } 
        }else{
            $statusMsg = "Sorry, there was an error uploading your file.";
        }
    }else{
        $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
    }
}else{
    $statusMsg = 'Please select a file to upload.';
}

// Display status message
echo $statusMsg;

1 Ответ

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

Согласно вашей проверке, вы должны пересмотреть свою HTML-разметку следующим образом:

<input type="file" name="file" class="form-control-file" id="formControl">
<input type="submit" name="submit">

или изменить ваше условие проверки на

if (isset($_POST["fileUpload"]) && !empty($_FILES["file"]["name"])) {
   ...
}

В любом случае, name="file" необходимо дляВаш элемент ввода файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...