如何确保使用cURL保存文件

时间:2014-02-25 14:48:45

标签: php

<?php
$source = 'http://www.xxx.com/1.jpg';
$fileBody = date('YmdHis') . rand(1000, 9999);
$extension = pathinfo($source, PATHINFO_EXTENSION);
$fileName = $fileBody . '.' . $extension;

$ch = curl_init($source);
$fp = fopen($path . $fileName, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
clearstatcache();

return $fileName;

这就是我从互联网上抓图像,图像保存成功后我会返回ajax文件名立即制作缩略图,但有时php会在处理下载时返回$ fileName,因此JavaScript在页面上显示空图像,文件确实下载后如何响应。

2 个答案:

答案 0 :(得分:2)

curl_exec在成功时返回true,在失败时返回false。使用该信息。

此外,您可以检查curl_getinfo 以确保传输成功完成且不为空。 (例如,您可以获得http_code,以及content_typesize_download)。

答案 1 :(得分:1)

$downComplete = false;
while(!$downComplete)
{
   if(!file_exist($filePath))
    {
        sleep(1);
    }
    else
    {
     $downComplete = true; 
     break;
    }
}

嗨,上面是检查文件是否已完全下载的想法,我认为它很有用, 主要想法是一直检查保存文件,直到完成下载,然后就可以了 显示img到前端..你可以在你的卷曲代码后添加它,我没有运行它 我自己,所以只是一个想法..