2016-05-23 61 views

回答

1

想到最簡單的方法,就是創建一個for循環,它從1到200計數,對於每一個計數,然後對圖像做出請求並將其保存到磁盤(I假設你想將圖像保存到你的磁盤)。 工作示例可以在底部找到。


讓我們開始設置一些變量:

$baseUrl = 'http://www.web.com/'; 
$localDirectory = 'downloaded_images/'; 
$maxImageNumber = 200; 

第一個變量$baseUrl定義了圖像將被加載。第二個定義您的本地目錄,圖像將保存在其中。 運行代碼前請確保該目錄存在,因爲它不會自動生成。最後一個變量$maxImageNumber存儲最大的圖像編號,我們需要for循環。

設置變量後,我們可以編寫for循環。用分號分隔;括號內有三個部分。第一個是我們將向上計數的起點。第二個確保我們不會超過我們的限制,最後一個只是說明數字將被計算出來,使用++速記。

for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) { 
    // code goes here 
} 

在這個for循環中,我們現在可以生成我們的文件名並將圖像下載/保存到磁盤。第一行使用功能str_pad()將前導0添加到圖像文件(就像在您的示例中一樣),然後將擴展名.png添加到名稱。這使我們可以重新使用文件名進行加載以及保存。第二行通過組合基本和圖像文件名稱來加載具有功能file_get_contents()的圖像。在最後一行中,我們使用file_put_contents()來保存剛剛加載到磁盤(使用本地目錄和圖像文件名)的$fileData

$imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png'; 
$fileData = file_get_contents($baseUrl . $imageFileName); 
file_put_contents($localDirectory . $imageFileName, $fileData); 

完整的代碼看起來應該是這樣:

<?php 

$baseUrl = 'http://www.web.com/images/'; 
$localDirectory = 'downloaded_images/'; 
$maxImageNumber = 10; 

for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) { 
    $imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png'; 
    $fileData = file_get_contents($baseUrl . $imageFileName); 

    file_put_contents($localDirectory . $imageFileName, $fileData); 
} 

萬一,這一切不應該工作,有一些事情你可以試試

  • 檢查$localDirectory是否存在並且是可寫的。
  • 如果file_get_contents()不應該工作,你可以use curl instead
  • 確保此代碼上執行的計算機可以訪問遠程服務器
0

太感謝你了,但可想而知,照片是在www.web。 com/image_0001_big.png和www.web.com/image_002_big.png等等...(最後將是web.com/image_0200_big.png)

這不起作用(我不知道爲什麼)

<?php 

$baseUrl = 'http://www.web.com/images'; 
$localDirectory = 'downloaded_images/'; 
$maxImageNumber = 200; 
$input='image_'; 

for($imageNumber = 001; $imageNumber <= $maxImageNumber; $imageNumber++) { 
    $imageFileName = str_pad($input, $imageNumber, 4, '_big', STR_PAD_LEFT) . '.png'; 
    $fileData = file_get_contents($baseUrl . $imageFileName); 

    file_put_contents($localDirectory . $imageFileName, $fileData); 
} 

謝謝。你太棒了!謝謝您的幫助!我正在學習PHP和我是一個初學者但:(

我的錯誤:

警告:str_pad()預計最多4個參數,5 C中給出:\ XAMPP \ htdocs中\ auto.php上線9

警告:的file_get_contents(http://www.web.com/images/.png):未能打開流:HTTP請求失敗HTTP/1.1 404未找到在C:!\ XAMPP \ htdocs中\ auto.php第10行

0

我發現半解決方案:_

<?php 

$baseUrl = 'http://web.com/images'; 
$localDirectory = 'downloaded_images/'; 
$maxImageNumber = 400; 
$input='image0'; 
$input2='big'; 
$extension ='.png'; 

for($imageNumber = 100; $imageNumber <= $maxImageNumber; $imageNumber++) { 
    $fileData = file_get_contents($baseUrl . $input . $imageNumber . $input2 . $extension); 
    file_put_contents($localDirectory . $imageNumber, $fileData); 
} 

?> 

問題是... 0001 0009 0010 !!我想告訴php「嘿,總是4位數」