2017-02-25 156 views
1

我試圖將通過JSON結果提供給我的圖像保存到磁盤。返回的JSON結果屬性我感興趣的是:以編程方式(PHP)保存沒有擴展名的圖像

https://i.scdn.co/image/6cd03f58ddf30a1393f06d6469973ba16ac908df 

這是正確的圖像。問題是,儘管上面的URL顯示圖像,但它不允許我下載,但我可以通過右鍵單擊它下載它。

我需要做的是使用我的PHP代碼將其保存到磁盤。

保存來自其他網站的結果並沒有問題,這些網站提供鏈接到直接圖像擴展名(.jpg,.gif或.png)的結果。但我一直無法弄清楚如何以編程方式從上面的URL下載圖像。

這可能嗎?

這是我使用的代碼,它可以在給出具有正確圖像擴展名的URL的結果上正常工作。返回的URL被加載到$ largeimg變量中。

$input = $largeimg; 
$output = 'image.jpg'; 
file_put_contents($output, file_get_contents($input)); 

任何有關如何實現這一目標的指導將不勝感激。

+1

把你的php代碼放到'image.php'中,並把這個文件看作是一個jpg(或其他)文件。然後在該PHP內使用'imagejpeg($ imageData,NULL,70)'輸出到屏幕。 – Martin

+2

你的URL的模式對你是否可以訪問它後面的對象沒有任何影響。 「文件擴展名」實際上是過去的一種手段,它不再具有真正的技術意義。如果你無法從php下載圖像,那麼這與這樣的「擴展」無關,但是無論是在代碼中出現錯誤,還是由於你以編程方式發送的請求與瀏覽器發送的請求不同,例如由一個缺少的http頭或類似的... – arkascha

回答

2

file_get_contents()能夠接受原始URI參數。您的代碼完美的作品對我來說,如果修改的方式:

$input = 'https://i.scdn.co/image/6cd03f58ddf30a1393f06d6469973ba16ac908df'; 

所以,file_get_contents()可以直接下載圖像。我認爲,問題是你的$largeimg變量。

+0

嗨@abcdn謝謝。你是對的,它的確如此工作,你也是對的,這是變量$ largeimg的一個問題,它有空格,它必須打破它。我已經使用trim(),現在按預期工作。謝謝! – omega1

+0

是的,我知道,whitespase是一個邪惡的東西。無論如何,很高興能夠有所幫助! – abcdn