$url='https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
file_put_contents('aaa.jpg',$url);
php的代码如图,为什么线上的url可以打开,但是保存到本地之后,就无法打开了?
$url='https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
file_put_contents('aaa.jpg',$url);
php的代码如图,为什么线上的url可以打开,但是保存到本地之后,就无法打开了?
$url = 'https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
$filename = 'aaa.jpg';
$result = file_put_contents($filename, file_get_contents($url));
if ($result === false) {
$error = error_get_last();
throw new Exception('Failed to write file: ' . $error['message']);
} else {
echo 'File saved: ' . $filename;
}
因为你保存文件内容不是图片的资源,而是一个字符串。
$url='https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
file_put_contents('aaa.jpg',$url);
这个代码中,保存在aaa.jpg
文件中的并不是图片,而是一个 URL 字符串;当然就无法作为图片打开了。
正确的方法:
简单实例:
$url = 'https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
$filename = 'aaa.jpg';
file_put_contents($filename, file_get_contents($url));
// file_get_contents($url) 获取的是图片内容
可能原因是你将 url 直接当成文件名保存,实际上它是一个完整的 URL 路径字符串,并不是文件名。
你需要用 curl 或 file_get_contents 获取远程图片的二进制数据并保存到本地文件中。下面是使用 file_get_contents() 函数获取图片并保存为本地文件:
$url = 'https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
$img = file_get_contents($url);
file_put_contents('aaa.jpg', $img);
如果使用 curl 进行操作,示例如下:
$url = 'https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch ,CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
file_put_contents('aaa.jpg', $data);
}
else{
echo "cURL Error #:" . $error;
}
其中,CURLOPT_RETURNTRANSFER 参数表示将请求结果以字符串返回,而不是直接输出到屏幕。
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答558 阅读✓ 已解决
1 回答858 阅读✓ 已解决
952 阅读
2 回答593 阅读
1 回答698 阅读
你倒是去获取数据呀,你这样就只是把 URL 写到了
aaa.jpg
里面,简单的就用file_get_contents
去获取。