首页 > 后端开发 > php教程 > 如何在没有服务器存储的情况下用PHP直接将FTP文件下载到浏览器?

如何在没有服务器存储的情况下用PHP直接将FTP文件下载到浏览器?

Susan Sarandon
发布: 2024-11-03 06:27:30
原创
612 人浏览过

How to Download an FTP File Directly to the Browser in PHP Without Server Storage?

从 FTP 下载文件到浏览器,无需服务器存储或重定向

在 PHP 脚本中,从 FTP 服务器获取文件是一项常见任务。然而,在将这些文件发送到用户的浏览器之前将它们存储在 Web 服务器上可能是不可取的。本文探讨如何从 FTP 服务器直接将文件下载到浏览器,绕过服务器存储并避免重定向。

原始代码

初始代码使用 ftp_get 将 FTP 文件检索到内存中) 和 ob_start():

<code class="php">public static function getFtpFileContents($conn_id , $file)
{
    ob_start();
    $result = ftp_get($conn_id, "php://output", $file, FTP_BINARY);
    $data = ob_get_contents();
    ob_end_clean();
    if ($resul)
        return $data;
    return null;
}</code>
登录后复制

直接流式传输到浏览器

要将文件直接流式传输到浏览器而不保存,请删除输出缓冲:

<code class="php">ftp_get($conn_id, "php://output", $file, FTP_BINARY);</code>
登录后复制

添加 Content-Length 标头

要包含 Content-Length 标头,请使用 ftp_size() 查询文件大小:

<code class="php">$conn_id = ftp_connect("ftp.example.com");
ftp_login($conn_id, "username", "password");
ftp_pasv($conn_id, true);

$file_path = "remote/path/file.zip";
$size = ftp_size($conn_id, $file_path);

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . basename($file_path));
header("Content-Length: $size"); 

ftp_get($conn_id, "php://output", $file_path, FTP_BINARY);</code>
登录后复制

请记住根据需要实施错误处理。有关 FTP 文件处理的更多信息,请参阅“从 FTP 列出并下载单击的文件”等资源。

以上是如何在没有服务器存储的情况下用PHP直接将FTP文件下载到浏览器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板