0

我编写了一个 php 函数来将 Internet 图像复制到本地文件夹,有时它运行良好,但有时它只是生成一个大小为 1257B 的无效文件。

function copyImageToLocal($url, $id)
{
    $ext=strrchr($url, "."); 
    $filename = 'images/' . $id . $ext;

    ob_start(); 
    readfile($url); 
    $img = ob_get_contents(); 
    ob_end_clean();

    $fp=@fopen($filename, "a"); 
    fwrite($fp, $img); 
    fclose($fp); 
}

注意:传入的$url是有效的,有时候这个函数第一次失败,第二次或者第三次可能会成功。真的很奇怪……这需要一些特殊的PHP设置吗?

请帮我!


我找到了真正的原因:测试图像的url不允许程序访问,虽然它可以在浏览器中打开。我尝试了其他一些图片网址,该功能运行良好。

所以,看来我需要找到一种方法来处理这种情况。多谢你们!

4

1 回答 1

1

为什么不直接打开文件并将其写入磁盘,如下所示:

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

这甚至会为您进行缓冲,因此您不应该遇到内存问题(因为您在将整个图像写入文件之前将其存储在内存中)

于 2013-07-24T03:17:09.493 回答