PHP使用GET属性

时间:2016-02-26 09:10:57

标签: php image

对不起家伙,如果它是重复,我coudnt找到类似的话题。所以,假设有一个带有图像内容的URL,名为" www.test.com/test.jpg"。 我想使用php将图像保存到文件夹,所以我使用

  file_put_contents('test.jpg', 'www.test.com/test.jpg');

它工作正常,将图像保存到当前文件夹。但是,如果图像URL如下所示:

  www.test.com/test.jpg?id={1a2b3c-4d5e6f}

我无法使用file_put_contents来保存图像。如果我尝试删除?id = {1a2b3c-4d5e6f}部分,浏览器将不会打开图像。任何想法如何使保存成功?

3 个答案:

答案 0 :(得分:1)

不要将URI用作文件名。这方面的潜在问题超出了您已经找到的范围。

相反,以下内容将起作用。

$uri = 'http://www.test.com/test.jpg?id={1a2b3c-4d5e6f}';
$data = file_get_contents($uri);
file_put_contents(md5($uri),$data);

如果需要图像的原始URI,请将其存储在DB或文本文件中,并将其引用回MD5。这样的事情可能有用(没有测试)。

$uri = 'http://www.test.com/test.jpg?id={1a2b3c-4d5e6f}';
$uriMd5 = md5($uri);
$data = file_get_contents($uri);
file_put_contents($uriMd5,$data);
file_put_contents($uriMd5.'.txt',$uri);

答案 1 :(得分:0)

$variable="www.test.com/test.jpg?id={1a2b3c-4d5e6f}";
$variable=substr($variable, 0, strpos($variable, "?")); // www.test.com/test.jpg
file_put_contents('test.jpg', $variable);

试试这个。

答案 2 :(得分:0)

解决方案:首先,获取数据的功能:

    function getData($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); 

        $data = curl_exec( $ch ); 
        curl_close($ch);  

        if ($data) return $data; 
        else die("no data - ".$url);
    }

然后使用:

 file_put_contents('test.jpg', getData(..URL..));