Подтвердить что ты не робот

Получение полного PATH загруженного файла - PHP

У меня есть форма (HTML, PHP), которая позволяет конечному пользователю загружать файл для обновления базы данных (MySQL) с записями в загруженном файле (в частности .csv). Однако в phpscript я могу получить только имя файла, а не полный путь к файлу. По этой причине fopen() не работает. Может кто-нибудь, пожалуйста, дайте мне знать, как я могу работать над поиском полного пути?

Код HTML:

<html>
<head>
</head>
<body>
<form method="POST" action="upload.php" enctype="multipart/form-data">
    <p>File to upload : <input type ="file" name = "UploadFileName"></p><br />
    <input type = "submit" name = "Submit" value = "Press THIS to upload">
</form>
</body>
</html>

PHP скрипт:

<?php
   .....
......
   $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory
?>
4b9b3361

Ответ 1

name относится к имени файла на стороне клиента. Чтобы получить имя файла (включая полный путь) на стороне сервера, вам нужно использовать tmp_name:

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');

Ответ 2

Используйте следующий код,

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');

Ответ 3

$target='uploads/'.basename($_FILES['UploadFileName']['name']);

if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) {

     //Insert into your db

     $fp = fopen($target, "r");
}

Ответ 4

Я написал вот так:

$filePath = realpath($_FILES["file"]["tmp_name"]);

Это дало мне полный путь к загруженному файлу в PHP. Если вы находите проблему с байтами 0 байтов в загрузке файла, просто измените эту строку длины содержимого следующим образом

header("Content-Length: ".filesize($filePath));

Где $filePath должен быть абсолютным путем для файла, а не только для дескриптора файла.