Я хочу создать PHP-сеть для управления моими файлами на сервере. Поэтому я устанавливаю XAMPP на свой сервер и запускаю на нем свою программу. Допустим, я установил его на C: Drive
Я могу загрузить файл на другой диск, такой как D: или E: используя этот код:
move_uploaded_file($_FILES['file']['tmp_name'], $drive.':/'.$cat.'/'.$catname.'/'.$newfilename)
$ drive для моего целевого диска, $ cat для моей группы категорий, adn $ catname для названия категории. Я могу загрузить файл легко.
Проблема в том, когда я хочу вызвать файл на моем PHP, используя этот код:
<audio controls>
<source src="'.$query['a_drive'].':/'.$query['c_group'].'/'.$query['c_name'].'/'.$query['a_link'], 'r'.'" type="audio/'.$extension.'">
Your browser does not support the audio element.
</audio>
$query
мой запрос для получения данных из базы данных (SELECT * bla bla
)
Мой браузер не может открыть файлы, которые я хочу открыть, он возвращает, что у меня нет доступа к файлам:
Не разрешено загружать локальный ресурс:
Кто-нибудь знает как это решить?
Проблема в том, что вы печатаете локальный путь к файлу на сервере. Однако, когда браузер открывает страницу, он интерпретирует локальный путь к клиенту и блокирует доступ к нему. Плюс файл находится на сервере, а не на клиенте.
Либо вы настраиваете свой веб-сервер таким образом, что папка, в которой сохраняются файлы, доступна через веб-сервер (виртуальная папка), и вы печатаете URL-адрес (а не локальный путь к файлу) в HTML-коде.
Или вы используете скрипт php, чтобы открыть файл на основе параметра get на сервере и распечатать его содержимое, используя соответствующий заголовок mime. Ссылка в html-файле будет указывать на этот php-файл с соответствующим параметром.
ОБНОВИТЬ:
file.php — это выводит файл клиенту
<?php
$filename=$_GET['filename']; //parameter identifying the file to be downloaded. Should not be direct path as in this simple example, rather than the id of the file's data stored in a database. You need to add that piece of code.
header('Content-Type: text/plain'); //set MIME type - you need to store this along your path to the file, you can get it from $_FILES['uploadedfilename']['type'] when a file is uploaded via php
header("Content-disposition: inline"); //advises the browser to open the file inside the browser
readfile($filename); //outputs the file
?>
HTML-ссылка:
<audio controls>
<source src="file.php?filename=yourfilename" type="...">
</audio>
Позвольте мне еще раз подчеркнуть: используйте идентификатор для ссылки на файл, а не путь.
Других решений пока нет …