Проблема: Всякий раз, когда я изменить enctype
на моем HTML форме multipart/form-data
, $_POST
переменные не отображаются в моем PHP скрипт. Пользователи загружают файлы вместе с заполнением формы, а файлы загружаются на сервер, но переменные $_POST
не заполняются.
Код:
Мой HTML форма, которая собирает данные текста/изображения.
index.php
<form name="myForm" METHOD="POST" ACTION="" enctype="multipart/form-data">
<input type="text" name="text1" id="text1">
<input type="text" name="text2" id="text2">
<input type="file" name="filebutton" id="filebutton">
<input type="submit" name="submit" id="submit">
</form>
Мой PHP скрипт, который пытается обновить свою базу данных MySQL, а также загрузить файл на моем сервере Ubuntu ниже.
upload.php
<?php
$uploaddir = "/var/www/img/pictures/";
$uploadfile = $uploaddir . basename($_FILES['filebutton']['name']);
move_uploaded_file($_FILES['filebutton']['tmp_name'], $uploadfile);
if (isset($_POST['filebutton'])) {
$pictureUpdate = ", PICTURE_FILEPATH = '" . $_POST['filebutton'] . "'";
} else {
$pictureUpdate = "";
}
$connection = mysqli_connect("1.2.3.4","xxxx","xxxx","xxxx") or die("Caonnot connect to database.");
$update = "UPDATE table SET COLUMN1='" . $_POST['text1'] . "', COLUMN2='" . $_POST['text2'] . "' . $pictureUpdate . " where COLUMN3 = " . $_POST['text1'] . " ";
$update_sql = mysqli_query($connection, $update) or die("Cannot connect to mysql table. ". $update);
header("Location: " . $_SERVER['REQUEST_URL'] . "?success=1");
exit();
Что я пробовал: Это первый раз, делая это, так что я своего рода Freestyling здесь, потому что я не могу получить эту работу.
- Изменено
enctype
поapplication/x-www-form-urlencoded
. Данные$_POST
или$_FILE
не обнаружены в файле upload.php. - Убрано
application/x-www-form-urlencoded
в целом. Когда я это делаю, переменные$_POST
работают, но мой файл не загружается. - проверено php.ini для
post_max_size
. После поиска в Интернете я столкнулся с несколькими темами StackOverflow, касающимися аналогичных проблем. Из того, что я собрал, если файл, пытающийся быть загруженным, превышает значение вpost_max_size
, тогда переменные$_POST
не пройдут. Значение в моем файле php.ini файла дляpost_max_size
говорит «8M», а загружаемое тестовое изображение файла составляет 103 KiB.
Как получить $_POST
данные для работы, а также загрузить файл из той же формы?
вы не имеете действия в вашей форме, то, как это вполне возможно. Или вы используете jquery для этого –
Не действует ли по умолчанию текущий URI, если он не установлен? –
blank action = текущий url, так что вы хотите 'ACTION =" upload.php "' –