PHP: получение полного пути из выбранного файла для импорта данных в базу данных
Я хочу позволить пользователю выбрать файл, из которого данные экспортируются и сохраняются в базе данных. Я нашел следующий код для импорта данных:
$fp = fopen("people.csv", "r");
while ($line = fgets($fp)) {
$char = split("\t",$line,4);
list($name, $age,$height,$date) = $char;
//Split the line by the tab delimiter and store it in our list
$sql = "insert into people(name,age,height,date) values('$name','$age','$height','$date')"; // Generate our sql string
mysql_query($sql) or die(mysql_error()); // Execute the sql
//fclose($line);
Я не уверен, что это сработает, но я еще далеко. Мой вопрос заключается в том, как мне получить полный путь к выбранному файлу, чтобы я мог ввести его в следующую команду вместо жесткого кодирования имени файла:
$fp = fopen("people.csv", "r");
Я провел много времени, исследуя это, но безрезультатно.
2 ответа
Если вы хотите разрешить пользователям загружать этот файл, вы должны осуществить загрузку файла. Пожалуйста, ознакомьтесь с W3Schools Tutorial для получения инструкций.
Основная идея - получить путь к файлу от $_FILES["file"]["tmp_name"]
:
$fp = fopen($_FILES["file"]["tmp_name"], "r");
Если вы статически храните свой файл в папке вашего веб-проекта, вы можете использовать путь, включая ваш DOCUMENT_ROOT
:
$path = $_SERVER["DOCUMENT_ROOT"] + 'relative/path/to/your/file/' + 'people.csv';
Вы можете получить путь к текущему файлу через __DIR__
магическая постоянная;
В твоем случае;
echo __DIR__ . 'people.csv';
Кроме того, вы можете рассмотреть возможность использования встроенных функций CSV, которые предлагает PHP; http://php.net/manual/en/function.fgetcsv.php
Если вы хотите вообще пропустить обработку файла через PHP, MySQL предлагает способы прямого импорта данных из файла CSV;