我正在製作一個爬網程序,將內容(圖像)放到我的網站上,我已經制作了一個腳本來爬網並將網址保存爲圖像,但現在我需要將圖像上傳到我的服務器,以便我可以在我的網站上使用它們。多次從URL保存圖像
我見過有人說應該使用file_put_contents,但你必須指定圖像名稱和分機,但它會動態?
我正在製作一個爬網程序,將內容(圖像)放到我的網站上,我已經制作了一個腳本來爬網並將網址保存爲圖像,但現在我需要將圖像上傳到我的服務器,以便我可以在我的網站上使用它們。多次從URL保存圖像
我見過有人說應該使用file_put_contents,但你必須指定圖像名稱和分機,但它會動態?
可以使用file_get_contents()和file_put_contents()
$image = 'http://example.org/image.jpg';
$filename = basename($image);
$content = file_get_contents($image);
file_put_contents('/path/to/your/dir/'.$filename, $content);
使用file_get_contents
和file_put_contents
很可能是最簡單的方法。
爲了避免碰撞(具有相同名稱的文件),可以使文件名的URL部分:
假設URL的數組:
$path = '/path/to/image/folder/';
$urls = array(
'http://www.somesite.no/some_image.jpg',
'http://www.someothersite.no/some_other_image.jpg',
'http://www.someothersite.no/another_image.jpg'
);
foreach ($urls as $url) {
$file_content = file_get_contents($url);
$filename = preg_replace("/[^a-zA-Z0-9 ]/", "", $url);
$filename = str_replace(" ", "-", $filename);
file_put_contents($path.$filename, $file_content);
}
文檔
file_get_contents
- http://www.php.net/manual/en/function.file-get-contents.phpfile_put_contents
- http://www.php.net/manual/en/function.file-put-contents.phppreg_replace
- http://php.net/manual/en/function.preg-replace.phpstr_replace
- http://php.net/manual/en/function.str-replace.php
所以你是不是你的網站是在同一臺服務器上運行的抓取工具? – Roloc 2012-08-16 17:15:58
如果你正在下載和保存,你應該有你已經下載的名稱,所以你可以使用它來上傳。或者,您可以上傳流式傳輸,然後漫步您的下載目錄,並上傳您找到的每個文件。 – ernie 2012-08-16 17:18:12