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