#php #html #forms
#php #HTML #формы
Вопрос:
Я работаю на этом веб-сайте, где мне нужно отправить файл из моей формы на сервер.
Часть файла ввода HTML :
<div class="custom-file">
<input id="inputGroupFile03" type="file" class="custom-file-input">
<label class="custom-file-label" for="inputGroupFile03" id='labelnextInput'>Sélectionnez un fichier</label>
</div>
И PHP, над которым я работал :
<?php
$targetdir = '/uploads/';
if(isset($_FILES['namefile']['name'])){
$target_file = $targetdir . basename($_FILES['nameFile']['name']);
};
$uploadOk = 1;
if(isset($_POST['submit'])){
$check = getimagesize($_FILES['nameFile']['tmp_name']);
if($check != False){
echo 'Ce fichier est une image -' . $check['mime'] . '.';
}else{
echo 'Type de ficher incorrect';
$uploadOk = 0;
}
}
header('Location: /aftersubmit.html');
?>
Когда форма отправлена, запускается PHP-скрипт и перенаправляет меня на aftersubmit.html страница, но файл в форме отсутствует в папке /uploads/ и нигде не отображается.
Спасибо!
Комментарии:
1. Покажите нам
<form.....>
бирку, пожалуйста2.
<form method="GET" action ='/php/fileToServer.php' enctype="multipart/form-data" id="formulaireUpload">
отправка находится на кнопке отправки и скрипте JS3.Метод Make
method="post"
get
не работает при перемещении файлов4. Для вашего поля ввода файла необходим
name
атрибут5. Узнайте, как загрузить здесь: w3schools.com/php/php_file_upload.asp
Ответ №1:
Вы можете отправлять файлы только с помощью запросов POST (и методов, не поддерживаемых формами). Они не могут быть закодированы в URL-адресе для запроса GET (и enctype
атрибут не влияет на форму GET). Измените метод вашего элемента формы.
Комментарии:
1. Даже когда я использую метод POST, он все равно не работает
Ответ №2:
вы можете проверить что-то вроде этого:
<div class="custom-file">
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]" multiple="multiple">
<button type="submit" name="submit">Sélectionnez un fichier</button>
</form>
</div>
files [] может загружать более одного файла и отправлять кодирование, например
$folderDestination = '../uploads/'; // ../ or ./ depends on your situation
if(isset($_POST['submit']))
{
if(file_exists($folderDestination))
{
if(is_writable($folderDestination)) {
$files = array_filter($_FILES['files']['name']);
$totalFiles = count($_FILES['files']['name']);
$fileUploaded = array();
for($i=0;$i<$totalFiles;$i )
{
$fileName = $_FILES['files']['name'][$i];
$ext = strtoupper(pathinfo($fileName, PATHINFO_EXTENSION));
$fileDestination = $folderDestination.'/'.$fileName;
if($ext == 'XML' or $ext == 'PNG') // You can check if file has proper extension
{
// upload file
move_uploaded_file($_FILES['files']['tmp_name'][$i], $folderDestination.'/'.$fileName);
$fileUploaded[] = $fileName;
// do echo
echo $fileName.' uploaded <span style="color: green; font-weight: bold;">correctly</span>';
// or header action
// header("Location: aftersubmit.php?info=uploadOK");
} else { echo '<span style="color: red; font-weight: bold;">'. $fileName .' uploaded error</span>'; }
}
} else { header("Location: aftersubmit.php?info=folderNotExists"); }
} else { header("Location: aftersubmit.php?info=folderIsNotWritable"); }
}
ofc измените свой aftersubmit.html к php. Иногда вам нужно проверить, существует ли папка и доступна ли она для записи, и это делается здесь. Он работает на моей стороне. Измените его для своих целей.