使用php代码从URL下载图像?

时间:2012-03-21 09:07:38

标签: php image url

如何使用php从URL下载图像(例如:https://www.google.com/images/srpr/logo3w.png)然后保存? 这是我到目前为止提出的,它在'file_put_contents'函数中给出了一个错误。

<form method="post" action="">
<textarea name="text" cols="60" rows="10">
</textarea><br/>
<input type="submit" class="button" value="submit" />
</form>

<?php
    $img = "no image";
    if (isset($_POST['text']))
    {
    $content = file_get_contents($_POST['text']);
    $img_path = '/images/';
    file_put_contents($img_path, $content);    
    $img = "<img src=\"".$img_path."\"/>";
    }
    echo $img;
?>

它给了我错误:

[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php

/images/目录位于php文件的同一目录中,并且是可写的。

5 个答案:

答案 0 :(得分:31)

您无法使用现有代码保存图像,因为您没有提供文件名。您需要执行以下操作:

$filenameIn  = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);

$contentOrFalseOnFailure   = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);

答案 1 :(得分:1)

你的错误是什么?但是你有正确的方法去做你想做的事。

请注意您的代码,我可以看到file_put_contents($img_path,,但$img_path是文件夹的路径。 你需要写一些类似的东西:

示例

$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");

答案 2 :(得分:0)

file_put_contents()要求第一个参数是文件名而不是路径。

答案 3 :(得分:0)

file_put_contents($img_path, $content); 

你要把什么?我认为你在getput时犯了一个错误。或者错过了指定完整路径,包括文件名和扩展名

答案 4 :(得分:0)

我在接受的答案中添加了一个条件,检查图像类型如下,

 if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
     $filename = './images/'.basename($_POST['text']);
     file_put_contents($filename, $content);
 }

从上面的例子中我展示了如何在下载文件之前检查png图像,以及更多内容类型,你可以找到here