首页  >  文章  >  后端开发  >  如何在不使用本地存储的情况下将文件从 FTP 服务器直接下载到浏览器?

如何在不使用本地存储的情况下将文件从 FTP 服务器直接下载到浏览器?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 15:01:01717浏览

How can I download files from an FTP server directly to a browser without using local storage?

将文件从 FTP 服务器下载到没有本地存储的浏览器

使用 PHP 脚本从 FTP 服务器下载文件时,通常的做法是存储在将文件发送到用户的浏览器之前,它们会暂时存储在 Web 服务器上。但是,这种方法效率较低。

获取文件内容而不存储

要直接将文件发送到浏览器而不将其保存到磁盘,只需删除输出缓冲即可函数(ob_start() 和 ob_get_contents())。此代码将文件直接发送到输出流:

<code class="php">ftp_get($conn_id, "php://output", $file, FTP_BINARY);</code>

添加 Content-Length 标头

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

<code class="php">$file_path = "remote/path/file.zip";
$size = ftp_size($conn_id, $file_path);</code>

然后,设置适当的标头并下载文件:

<code class="php">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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn