2015-10-16 2 views
0

Я хочу создать веб-сайт PHP для управления моими файлами на сервере. Поэтому я устанавливаю XAMPP на свой сервер и запускаю в нем свою программу. Пусть говорят, что я установить его на диск С:PHP-сервер доступа Драйвер

я могу загрузить файл на другой диск, например, как D: или E: используя этот код:

move_uploaded_file($_FILES['file']['tmp_name'], $drive.':/'.$cat.'/'.$catname.'/'.$newfilename) 

$ диск для моей целевой диск, $ кошке для моей категории group, 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

какой странный подход к управлению локальным сервером –

+0

Я хочу поделиться этим файловым сервером с другим ПК, поэтому другой компьютер просто подключится к этим приложениям, скажем: 10.10.1.1, затем приложения будут открыты, затем они смогут искать/открывать любой файл здесь. Мне нужны приложения, потому что я хочу легко искать файл ... –

+0

они находятся в одной сети? просто создайте общий ресурс –

ответ

1

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

Либо вы настраиваете свой веб-сервер так, чтобы папка, в которой хранятся файлы, доступна через веб-сервер (виртуальная папка), и вы печатаете URL-адрес (а не локальный путь к файлу) в html-коде.

Или вы используете скрипт php, чтобы открыть файл на основе параметра get на сервере и распечатать его содержимое с помощью соответствующего заголовка mime. Ссылка в файле html укажет на этот файл php с соответствующим параметром.

UPDATE: 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> 

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

+0

Вы имеете в виду, что мне нужно использовать fopen()? Или какую функцию мне нужно использовать? –

+0

обновил мой ответ – Shadow

+0

Perfect. Это то, что я ищу. Спасибо большое. Значит, нет способа воспроизвести его прямо из HTML? –

Смежные вопросы