Проблема PHP mysql при создании загружаемой картинки в blob undefined index _FILES

0

Я читал около 15 потоков здесь, пробовал каждый, и никто еще не работал, проблема, похоже, связана с загрузкой изображения с использованием blob (да, я знаю, что я не должен и, поскольку он масштабируется, это вызовет проблему, но это только прототип). Кажется, что даже если я передаю файл, $ _FILES ['picture'] не установлен. Если я удаляю if и получаю что-то вроде $ imageName = $ _FILES ['picture'] ['name']; он говорит, что индексные изображения не существуют. Любая помощь будет оценена очень, спасибо.

Вот мой html-код:

<!DOCTYPE html>
<html>
<head>
<?php include ('header.php'); ?>
<title>Add item</title>
</head>
<body>

<h1>Add item:</h1>

<form method="post" action="additem.php">
Item Name:
<input type="varchar" name="name" maxlength=64>
<br><br>

Description:<br>
<textarea name="description">
</textarea>
<br><br>

Date added:
<input type="date" name="date">
<br><br>

Picture:
<input type="file" name="picture" value="picture">
<br><br>

Shop:
<input type="varchar" name="shop" maxlength=64>
<br><br>

Type:
<input type="varchar" name="type" maxlength=15>
<br><br>

subtype:
<input type="varchar" name="subtype" maxlength=32>
<br><br>

<input type="submit" enctype="multipart/form-data" method="post" name="submit" value="Add event">
</form>
<br><br>

и мой php-код:

<?php

if (empty($_SESSION['username'])) {
    echo "Not logged in";
    exit;
}  else {
    if ($_SESSION['privilege'] == "student") {
        echo $_SESSION['username'];
        echo " does not have permission to create events ";
        exit;
    } else {
        echo $_SESSION['username'];
        echo " creating new item";
    }
}

if(!empty($_POST)) {
    require_once('connectdb.php');

    $name = $_POST['name'];
    if(empty($name)) {
        echo(" You must enter an item name.");
        exit;
    }

    $date = $_POST['date'];
    if(empty($date)) {
        echo(" You must enter an item add date.");
        exit;
    }


    $shop= $_POST['shop'];
    if(empty($venue)) {
        echo(" You must enter an shop.");
        exit;
    }

    if (isset($_FILES['picture'])){
    $imageName = $_FILES['picture']['name'];
    $imageData = $_FILES['picture']['tmp_name'];
    $imageType = $_FILES['picture']['type'];

    if(substr($imageType,0,5) == "image")
    {
        echo "this is an image";
    } else {
        echo "Incorrect file type";
        exit;
    }

    $description = $_POST['description'];
    $type = $_POST['type'];
    $subtype = $_POST['subtype'];
    $organiser = $_SESSION['username'];


    try {
        $stmt = $db->prepare("INSERT INTO 'items' ('name', 'description', 'date', 'picturename', 'picture', 'organiser', 'shop', 'type', 'subtype') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->execute(array($name, $description, $date, $imageName, $imageData, $_SESSION['username'], $shop, $type, $subtype));
        echo("Successful.");
    } catch(PDOException $ex) {
        echo("Failed to save data to database.<br>");
        echo($ex->getMessage());
        exit;
    }
    }else{
        echo "file not set";
    }

}

?>
</body>
</html>
Теги:
blob

1 ответ

2
Лучший ответ

Вы должны указать нестандартную кодировку для своей формы - иначе браузер не будет загружать ваш файл вообще:

<form method="post" action="additem.php" enctype="multipart/form-data">

Ещё вопросы

Сообщество Overcoder
Наверх
Меню