Переменные $ POST не работают с $ FILES и multipart / form-data
: всякий раз, когда я изменить enctype
в моей HTML-форме в multipart/form-data
, $_POST
переменные не заполняются в моем PHP-скрипте. Пользователи загружают файлы вместе с заполнением формы, а файлы загружаются на сервер, но $_POST
переменные не заполнять.
код:
моя HTML-форма, которая собирает текст/изображение данных.
.в 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 ниже.
загрузить.в 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
toapplication/x-www-form-urlencoded
. Ни$_POST
или$_FILE
данные появились в загрузить.в PHP. - удалены
application/x-www-form-urlencoded
в целом. Когда я это делаю, мой$_POST
переменные работают, но мой файл не загружается. - проверил php.ini на
post_max_size
. При поиске в Интернете я наткнулся на пару тем StackOverflow, касающихся аналогичных проблем. Из того, что я собрал, если файл, который пытается загрузить, превышает значение вpost_max_size
, потом$_POST
переменные не будут проходить. Значение в my php.ini наpost_max_size
говорит "8M" , и изображение файла теста загружено 103 КБ.
как сделать $_POST
данные для работы, а также загрузка файла из той же формы?
1 ответов
вам просто нужно переместить файл материал внутри оператора if, и изменить $_POST['filebutton']
to $_FILES['filebutton']
всякий раз, когда вы делаете загрузку файла, файлы заполняются в $_FILES
глобальная переменная, а другие поля заполняются в $_POST
глобальная переменная.
<?php
$uploaddir = "/var/www/img/pictures/";
if (isset($_FILES['filebutton'])) {
$uploadfile = $uploaddir . basename($_FILES['filebutton']['name']);
move_uploaded_file($_FILES['filebutton']['tmp_name'], $uploadfile);
$pictureUpdate = ", PICTURE_FILEPATH = '" . $_FILES['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();
попробуйте этот код и посмотрите, что он делает для вас, если это работает, а другой-нет, это означает, что в вашем коде нам нужно решить проблему.