使用PHP从URL保存图像到磁盘

时间:2016-11-23 18:47:49

标签: php html

我尝试使用PHP文件将图像从URL保存到我的计算机。它在我搜索的卡片只有一个名字时起作用;但是,当我尝试使用多个名字的卡片时,我得到了:

Warning: file_get_contents(http://gatherer.wizards.com/Handlers/Image.ashx?name=black lotus&type=card&.jpg): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in C:\xampp\htdocs\MTGFetcher\results.php on line 6

这是我的cardfetch.php代码;

<form action="results.php" method="post">

Name of card: <br>

<input type="text" name="cardname" value="cardresult">

<input type="submit" value="Submit">

</form>

对于我的results.php:

<?php

$results = $_POST['cardname'];
$url = "http://gatherer.wizards.com/Handlers/Image.ashx?name=" . $results . "&type=card&.jpg";
$img = "Pictures/$results.jpg";
file_put_contents($img, file_get_contents($url));
?>

<img src="<?php echo $url ?>">

为什么不使用多个单词?

1 个答案:

答案 0 :(得分:1)

这个空间可能会让人失望。使用http_build_query,它会转换任何不良字符:

$query_array = array('name'=>$_POST['cardname'], 'type'=> 'card', '.jpg');
$url = "http://gatherer.wizards.com/Handlers/Image.ashx?".http_build_query($query_array);

您可能必须使用数组,因为"&type=card&.jpg";有点奇怪。