2016-01-26 55 views
0

我使用來自第三方網站的API製作縮略圖圖像並在我的網站上顯示。我在php中使用以下行顯示縮略圖:將圖像下載到由API獲取的服務器上

echo '<img src="http://api.thirdpartysite.org/?some_param" />'; 

它工作正常,圖像在瀏覽器中完美顯示。當然,從我的瀏覽器我可以保存法師到我的電腦。

有沒有一種方法可以直接將圖像文件直接下載到我的服務器使用PHP?

編輯: 我已經嘗試過

file_put_contents("image.png", fopen("http://api.thirdpartysite.org/?some_param'", 'r')); 

,並在服務器

我使用的主機共享,Linux服務器創建一個空的圖像文件。

+0

你必須使用:'file_put_contents (「image.png」,file_get_contents(「http://api.thirdpartysite.org/?some_param'」));'。 'fopen()'函數可以是更好的方法,但是有一個[不同的語法](http://nl3.php.net/manual/en/function.fread.php)。 – fusion3k

+0

謝謝。它仍然會創建一個空文件,只是第三方網站的水印。 – cybergeek654

+0

這是因爲第三方網站可能不允許直接下載!這是一個複雜的問題,取決於第三方網站,它檢查HTTP-REFERER,更復雜的cookie。 – fusion3k

回答

0

我使用了curl_exec(),它像一個魅力一樣工作。

0

偉大的細微差別是,你可能不知道下載的圖像文件的擴展名。
所以目前我可以建議你一個簡單的解決方案,下載當前的谷歌標誌圖像(例如)。
的功能列表,我們將使用: file_get_contentsfile_put_contentsgetimagesizerenameheaderreadfile

$img = file_get_contents("https://www.google.com.ua/logos/doodles/2016/90th-anniversary-of-the-first-demonstration-of-television-6281357497991168.3-res.png"); 
file_put_contents("image", $img); // assuming that we don't know the extension at the moment 
$image_data = getimagesize("image"); // getting image details 
$ext = explode('/',$image_data['mime'])[1]; // getting image mime type 
rename("image", "image." . $ext); // rename image specifying determined extension 

// the immediate test: we will immediately output the downloaded image (just for testing) 
header("Content-Type: image/" . $ext); 
readfile("image." . $ext); 

和輸出將如下面所示:
enter image description here

相關問題