在 PHP 中有没有一种方法可以让服务器直接将文件下载到文件系统? [关闭]

Posted

技术标签:

【中文标题】在 PHP 中有没有一种方法可以让服务器直接将文件下载到文件系统? [关闭]【英文标题】:In PHP is there a way that the server can download a file directly to the filesystem? [closed] 【发布时间】:2012-11-05 13:02:00 【问题描述】:

我需要我的服务器下载一个文件并将其写入服务器的文件系统。问题是我见过的所有 php 示例都将文件下载到服务器 RAM 中,然后写入文件。

由于我正在处理大文件,我希望 PHP 从其他服务器读取文件并立即将读取的内容写入本地文件。

【问题讨论】:

file_put_contents('/path/to/file', file_get_contents('http://example.com/file'));? 您尚未分享与您相关的示例,但在此网站上,我们有 QA 材料,展示了如何不使用与文件总大小一样大的 RAM 缓冲区。此外,PHP 手册中充满了相关的功能和示例。我真的很想知道是什么挡住了你的路。 php.net/filesystem @jtheman - 我在 Amazon EC2 服务器上使用 Windows,我们正准备切换到 Linux。不幸的是,我们可以连接到一些 FTP 服务器,但是其他 FTP 服务器无法通过 NAT 服务器建立数据通道连接,并且不允许我们使用被动连接,所以对于这个,我们通过 PHP 完成了/HTTP 使用以下 Kamil 的示例。如果我可以完全控制另一台服务器,我会安装一个在 EC2 上运行的客户端可以连接的 FTP 服务器。 【参考方案1】:

像这样使用curl

<?php
 $url  = 'http://www.example.com/a-large-file.zip';
 $path = '/path/to/a-large-file.zip';

 $fp = fopen($path, 'w');

 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_FILE, $fp);

 $data = curl_exec($ch);

 curl_close($ch);
 fclose($fp);
?>

【讨论】:

+1 表示CURLOPT_FILE。我不知道你能做到。 @RocketHazmat 谢谢,我将它用于大文件 - 将数据下载到内存中会降低服务器性能和/或内存要求不可接受

以上是关于在 PHP 中有没有一种方法可以让服务器直接将文件下载到文件系统? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SourceThree的简单使用

php在本机怎么打开

关于php的getenv()方法获取环境变量的问题

有没有办法让 PHP 将 sql 结果直接转换为 JSON?

php让图片弹出下载框的方法

PHP将docx文件转换为pdf