将文件从 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中文网其他相关文章!