我想安全地从URL下载图片。 我首先的想法当然是检查扩展名 - 如果兼容,就下载它并将其保存到正确的扩展名(应该是安全的,因为服务器不会运行存储在 .jpg
文件中的PHP代码(好吧,除非配置为这样做))。 还有其他更好的方法吗?使用这种方法是否仍存在风险?
你应该检查一下它是否为图片,因为扩展名是可以被篡改的。
$file = file_get_contents($url);
if(@imagecreatefromstring($file)) {
// it's a valid image file; handle it
}
else {
// it's not an image file; error!
}
/* gets the data from a URL */
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
要获取文件信息,您可以使用curl_getinfo()
。
更多信息在这里
这应该可以帮助您使用PHP通过URL下载任何内容。 至于上传?您想将文件保存在哪里?