如何使用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文件的同一目录中,并且是可写的。
答案 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);
你要把什么?我认为你在get
和put
时犯了一个错误。或者错过了指定完整路径,包括文件名和扩展名
答案 4 :(得分:0)
我在接受的答案中添加了一个条件,检查图像类型如下,
if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
$filename = './images/'.basename($_POST['text']);
file_put_contents($filename, $content);
}
从上面的例子中我展示了如何在下载文件之前检查png图像,以及更多内容类型,你可以找到here。