mysql — PHP сервер доступа Drive

Я хочу создать 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)

Мой браузер не может открыть файлы, которые я хочу открыть, он возвращает, что у меня нет доступа к файлам:

Не разрешено загружать локальный ресурс:

Кто-нибудь знает как это решить?

0

Решение

Проблема в том, что вы печатаете локальный путь к файлу на сервере. Однако, когда браузер открывает страницу, он интерпретирует локальный путь к клиенту и блокирует доступ к нему. Плюс файл находится на сервере, а не на клиенте.

Либо вы настраиваете свой веб-сервер таким образом, что папка, в которой сохраняются файлы, доступна через веб-сервер (виртуальная папка), и вы печатаете 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>

Позвольте мне еще раз подчеркнуть: используйте идентификатор для ссылки на файл, а не путь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]