2016-11-23 102 views
0

我試圖使用PHP文件將圖像從URL保存到我的計算機。它適用於我搜索的卡片只有一個名稱;然而,當我嘗試做它用多個名字的卡片,我得到:使用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

該空間可能會丟掉東西。使用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";是有點奇怪。

+0

非常感謝,工作! –