Как отправить файл из формы ввода на сервер

#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"> отправка находится на кнопке отправки и скрипте JS

3.Метод 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. Иногда вам нужно проверить, существует ли папка и доступна ли она для записи, и это делается здесь. Он работает на моей стороне. Измените его для своих целей.