PHP 访问服务器驱动器

PHP access server Drive

我想创建一个 PHP 网站来管理我在服务器上的文件。所以我在我的服务器上安装 XAMPP 并在其中安装 运行 我的程序。假设我将它安装在 C: Drive

我可以使用此代码将文件上传到另一个驱动器,例如 D: 或 E: :

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

我的目标驱动器为 $drive,我的类别组为 $cat,类别名称为 $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)

我的浏览器无法打开我想打开的文件,return我没有被允许访问这些文件:

Not allowed to load local resource:

有人知道怎么解决吗?

问题是您打印了服务器上文件的本地路径。但是,当浏览器打开页面时,它会解释客户端的本地路径并阻止对其的访问。另外文件在服务器上,而不是在客户端上。

您可以通过网络服务器(虚拟文件夹)访问保存文件的文件夹并打印 url(而不是本地文件路径)在 html 代码中。

或者,您使用 php 脚本根据服务器上的获取参数打开文件,并使用适当的 mime header 打印其内容。 html 文件中的 link 将通过适当的参数指向此 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 link:

<audio controls>
  <source src="file.php?filename=yourfilename" type="...">
</audio>

我再强调一次:使用id来引用文件,而不是路径。