我可以使用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+');
奇怪的是有效。所以现在我遇到了一个重命名文件的问题。有什么建议吗?
答案 0 :(得分:1)
PHP中的文件路径是服务器路径。我怀疑你的服务器上有/images
文件夹。
尝试从当前PHP文件构建一个相对路径,例如,假设在与PHP脚本相同的目录中有一个images
文件夹...
$path = __DIR__ . '/images/' . basename($img);
另外,为什么不尝试这个很多更简单的脚本
$dest = __DIR__ . '/images/' . basename($img);
copy($img, $dest);