【问题标题】:file_put_contents is unable to get whole filefile_put_contents 无法获取整个文件
【发布时间】:2015-06-16 13:45:49
【问题描述】:

我正在使用 hostmonster 作为托管服务提供商。

我已经写了下面的代码。

$mp4_url = 'http://www.w3schools.com/html/mov_bbb.mp4';
$filename = 'sample.mp4';

file_put_contents( $filename , fopen($mp4_url, 'r' ) );

我看到了奇怪的行为。有时它可以工作,但有时它只复制少量文件,例如有时文件大小为 100kb 有时 600kb 有时它会复制整个文件。

请建议我应该如何将任何 mp4 文件从任何服务器复制到我们的服务器。

我们要复制大文件,大小可以是 600MB 或 1GB。

【问题讨论】:

  • 你到底想做什么?
  • file_get_content() 函数用于从另一个站点获取内容
  • 我正在尝试将 mp4 文件从另一个网站复制到我的服务器。
  • 它是一个非常不明确的代码,没有任何错误检查等,您可以使用 b 标志尝试二进制模式。无论如何,它似乎不是您想要实现的有效方式。
  • @rahultyagi 我该怎么办?

标签: php hostmonster


【解决方案1】:

试试copy()。这将完成你的工作:

$file = 'http://www.w3schools.com/html/mov_bbb.mp4';
$newfile = $_SERVER['DOCUMENT_ROOT'] . '/sample.mp4';

if ( copy($file, $newfile) ) {
    echo "Copy success!";
}else{
    echo "Copy failed.";
}

【讨论】:

  • 你能告诉我它会做什么以及为什么我以前的代码不起作用吗?
  • @RakeshKanyal 用这个替换你之前的代码
  • 我在本地尝试。它工作正常。几秒钟后上线,我得到空白页。
  • @RakeshKanyal 重启本地服务器并尝试
【解决方案2】:

使用 curl 而不是使用file_put_contents

$url='http://www.w3schools.com/html/mov_bbb.mp4';
$saveto='path';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$raw = curl_exec($ch);
curl_close($ch);
if (file_exists($saveto)) {
    unlink($saveto);
}
$fp = fopen($saveto, 'x');
fwrite($fp, $raw);
fclose($fp);

【讨论】:

  • 你能告诉我它会做什么以及为什么我以前的代码不起作用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2015-10-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 2019-11-04
  • 2015-08-19
相关资源
最近更新 更多