我有一个输出图像的远程网址 网址格式如下
http://domain.com/my_file/view/<file_id>/FULL/
在url“my_file”中是控制器名称,“view”是函数名,另外两个是参数
如果我在浏览器中点击此网址,则会显示图片
我想在我的项目文件夹中获取该图像
我尝试过使用file_get_contents但是它给了我404的警告
我怎样才能做到这一点?
答案 0 :(得分:2)
$img=file_get_contents('http://example.com/image/test.jpg');
file_put_contents('/your/project/folder/imgname.jpg',$img);
只有在php.ini文件中将allow_url_fopen
设置为1时才有效。
如果您可以更改此值,请启用它并完成。
另一种选择是CURL。检查PHP配置中是否启用了此模块。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/image/test.jpg');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER , 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = @curl_exec($ch);
$curl_err = curl_error($ch);
curl_close($ch);
if (empty($curl_err)) {
file_put_contents('/your/project/folder/imgname.jpg',$result);
}
如果未启用CURL,您可以编写一个简单的HTTP客户端,如下所示:
$buf='';
$fp = fsockopen('example.com',80);
fputs($fp, "GET /image/test.jpg HTTP/1.1\n" );
fputs($fp, "Host: example.com\n" );
fputs($fp, "Connection: close\n\n" );
while (!feof($fp)) {
$buf .= fgets($fp,128);
}
fclose($fp);
file_put_contents('/your/project/folder/imgname.jpg',$buf);
答案 1 :(得分:0)
使用Curl:
function curlFile($ url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function readurl()
{
$url="http://domain.com/my_file/view/<file_id>/FULL/";
curlFile($url);
}
echo readurl();
答案 2 :(得分:0)
如果您正在尝试
$image = file_get_contents('http://domain.com/my_file/view/<file_id>/FULL/');
if($image) file_put_contents('some/folder/<file_id>');
并且它不起作用,它可能意味着:
http://domain.com/my_file/view/<file_id>/FULL/
时查看来源。http://domain.com/my_file/view/<file_id>/FULL
?