相关疑难解决方法(0)

下载 webroot 之外的文件

好的,首先很抱歉,因为我意识到这是一个之前已经多次讨论过的主题 - 相信我,我知道,我已经阅读了之前的所有问题和答案,但仍然无法解决这个问题。

我有一个包含可下载文件的文件夹。出于安全目的,我将此文件放在 webroot 之外。然而,尽管我尽了最大的努力,我还是无法让我的 php 脚本下载文件。

我正在使用使用 Plesk 11 的 Linux VPS Apache 服务器。

(简化的)文件结构如下。该httpdocs文件夹是 webroot。该private/uploadedfiles文件夹是我要下载的位置。

-var
 - www
  - vhosts
   - mydomain.org.uk
    - httpdocs (webroot)
    - private
     - uploadedfiles
Run Code Online (Sandbox Code Playgroud)

我正在使用 jQuery ajax 调用将文件名传递给名为downloadscript.php. 该脚本位于httpdocswebroot 中。脚本如下:

<?php

$filename = $_POST['fbpath'];
$path = '/var/www/vhosts/mydomain.org.uk/private/uploadedfiles/' . $filename;

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
exit;

?> …
Run Code Online (Sandbox Code Playgroud)

php apache plesk

6
推荐指数
1
解决办法
6254
查看次数

允许用户在webroot之外下载文件

您好我使用PHP来允许用户上传文件,出于安全原因,我让他们坐在webroot(/ var/www)文件夹之外的文件夹中.它位于文件夹/ var/uploads中.用户上载特定记录的文件.将上载的文件移动到uploads文件夹后,附件的地址将存储在数据库中.现在,只要用户检查记录,就会显示特定记录的附件以供下载.

由于他们不在webroot,我无法下载,因为他们会有一个网址

HTTP://localhost/var/uploads/attachment.txt

我们有解决方案,还是可下载的文件夹是webroot的子目录?

<?php
$con = mysql_connect("localhost","id","pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("db", $con);

$result = mysql_query("select * from attachments");

while($row = mysql_fetch_array($result))
{
echo '<a href="'.$row[2].'" target="_blank">Download</a>--'.$row[3].'<br>';
}

mysql_close($con);
?> 
Run Code Online (Sandbox Code Playgroud)

是我正在使用的代码.文件夹的所有者是www-data:/或Web服务器.所以应该没有访问问题.

php download

5
推荐指数
1
解决办法
4265
查看次数

在 PHP 中强制下载图像。在本地工作但在实时 Linux 服务器上崩溃

我正在通过我的网站强制下载图像。

\n\n

强制下载在 Apache/Windows 开发机器上运行良好。

\n\n

然而,当它在我的 Linux Web 服务器上运行时,它会将垃圾字符推送到屏幕上。

\n\n
e.g. \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdJFIF\xef\xbf\xbd\xef\xbf\xbdH\xef\xbf\xbdH\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd6Exif\xef\xbf\xbd\xef\xbf\xbdMM\xef\xbf\xbd*\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 火狐浏览器——垃圾
  • \n
  • 铬 - 垃圾
  • \n
  • Internet Explorer 7 - 在页面中显示图像

    \n\n
    $fileName = basename($filePath);\n$fileSize = filesize($filePath);\n\n\n// Output headers.\nheader("Cache-Control: private");\nheader("Content-Type: Image/jpeg");\nheader("Content-Length: ".$fileSize);\nheader("Content-Disposition: attachment; filename=".$fileName);\n\n\n// Output file.\nreadfile ($filePath);                   \nexit();\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
\n\n

我的实时服务器上可能存在哪些差异会导致其崩溃?

\n

php http download

4
推荐指数
1
解决办法
1998
查看次数

标签 统计

php ×3

download ×2

apache ×1

http ×1

plesk ×1