Как получить путь к файлу в html в PHP?

#php #file-upload #filepath

#php #загрузка файла #путь к файлу

Вопрос:

Может кто-нибудь, пожалуйста, сказать мне, как получить путь к файлу, используя html <input type="file"> в PHP?

Вот мои коды:

index.php

 <form action="csv_to_database.php" method="get" >
 <input type="file" name="csv_file" />
 <input type="submit" name="upload" value="Upload" />
</form>
  

и в csv_to_database.php

 <?php

 if (isset($_GET['csv_file'])) {

 $row = 1;

  if (($handle = fopen($_GET['csv_file'], "r")) !== FALSE) {
   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>n";
    $row  ;
    for ($c=0; $c < $num; $c  ) {
        echo $data[$c] . "<br />n";
    }
   }
   fclose($handle);
  }

 } 
?>
  

Моя проблема в том, что это работает только тогда, когда данные csv находятся в том же каталоге, что и мои php-файлы. Я думаю, мне нужно получить путь к файлу, но я не знаю, как это сделать.

Комментарии:

1. php.net/manual/en/features.file-upload.php

Ответ №1:

Вы не должны просто использовать то, $_GET что у вас есть сейчас. Ваш файл основан на $_FILES["csv_file"]["tmp_name"] .

Лучше всего вам ознакомиться с этим руководством, в котором в основном говорится, что вам нужно сделать что-то вроде этого:

 <?php
if ($_FILES["csv_file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["csv_file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["csv_file"]["name"] . "<br />";
  echo "Type: " . $_FILES["csv_file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["csv_file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["csv_file"]["tmp_name"];
  }
?>
  

И вы можете перейти оттуда. Используйте move_uploaded_file , если вы хотите переместить файл из временного расположения, также объяснено в руководстве 🙂

Ответ №2:

Я думаю, вы бы многое выиграли, взглянув на следующую ссылку: Загрузка методом POST.

Прежде всего, вы должны изменить свой метод form на post и добавить enctype="multipart/form-data" .

Затем вы можете получить путь к временному файлу из $_FILES['csv_file']['tmp_name'] .

Ответ №3:

В вашем вызове fopen используйте $_GET['csv_file']['tmp_name'] — это указывает на файл на сервере сразу после загрузки.