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

146
13

У меня есть форма (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
?>

спросил(а) 2021-01-25T16:22:33+03:00 4 месяца, 4 недели назад
1
Решение
223

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

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

ответил(а) 2021-01-25T16:22:33+03:00 4 месяца, 4 недели назад
89

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

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

ответил(а) 2021-01-25T16:22:33+03:00 4 месяца, 4 недели назад
89

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

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

//Insert into your db

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

ответил(а) 2021-01-25T16:22:33+03:00 4 месяца, 4 недели назад
76

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


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

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


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

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

ответил(а) 2021-01-25T16:22:33+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема