使用curl php将图像从网站保存到文件夹

时间:2013-09-18 03:21:14

标签: php curl

我可以使用curl从网站保存图像,如下所示:

//$fullpath = "/images/".basename($img);
$fullpath = basename($img);

$ch = curl_init($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$rawData = curl_exec($ch);
curl_close($ch);

if(file_exists($fullpath)) {
    unlink($fullpath);
}

$fp = fopen($fullpath, 'w+');
fwrite($fp, $rawData);
fclose($fp);

但是,这只会将图像保存在我拥有执行保存功能的php文件所在的文件夹中。我想将图像保存到特定文件夹中。我尝试过使用$ fullpath =“/ images /”。basename($ img); (注释掉我的函数的第一行)但这会导致错误:

  
    

无法打开流:没有此类文件或目录

  

所以我的问题是,如何将文件保存在项目中的特定文件夹中? 我的另一个问题是,如何更改保存在我的文件夹中的图像的文件名?例如,我想将前缀siteimg_添加到图像的文件名中。我该如何实现呢?

更新:尝试更多地使用代码后,我设法解决了路径的第一个问题。我没有使用$ fullpath =“/ images /”。basename($ img),而是在fopen之前添加了一个变量,并将其添加到fopen方法中,如下所示:

$path = "./images/";
$fp = fopen($path.$fullpath, 'w+');

奇怪的是有效。所以现在我遇到了一个重命名文件的问题。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

PHP中的文件路径是服务器路径。我怀疑你的服务器上有/images文件夹。

尝试从当前PHP文件构建一个相对路径,例如,假设在与PHP脚本相同的目录中有一个images文件夹...

$path = __DIR__ . '/images/' . basename($img);

另外,为什么不尝试这个很多更简单的脚本

$dest = __DIR__ . '/images/' . basename($img);
copy($img, $dest);