Как получить путь к файлу в HTMLв PHP? - PullRequest
6 голосов
/ 28 апреля 2011

Может кто-нибудь подскажет, как получить путь к файлу, используя 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-файлы. Я думаю, что мне нужно получить путь к файлу, но я не знаю, как это сделать.

Ответы [ 3 ]

8 голосов
/ 28 апреля 2011

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

Лучший обзор, который вы прочитали этот урок , в котором, в основном, сказано, что вам нужно сделать что-то вроде этого:иди оттуда.Используйте move_uploaded_file, если вы хотите переместить файл из временного местоположения, также объяснено в руководстве:)

1 голос
/ 28 апреля 2011

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

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

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

0 голосов
/ 28 апреля 2011

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

...