我想使用 fopen、fwrite 将文件从外部服务器保存到我服务器上的文件夹中。
首先加载来自外部站点的页面,并扫描任何图像链接。然后将该列表从 an 发送到 fwrite 函数。这些文件已创建,但它们不是有效的 jpg 文件,在浏览器中查看它们似乎它们在我的服务器上的路径已写入它们。
这是代码:
//read the file
$data = file_get_contents("http://foo.html");
//scan content for jpg links
preg_match_all('/src=("[^"]*.jpg)/i', $data, $result);
//save img function
function save_image($inPath,$outPath)
{
$in= fopen($inPath, "rb");
$out= fopen($outPath, "wb");
while ($chunk = fread($in,8192))
{
fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}
//output each img link from array
foreach ($result[1] as $imgurl) {
echo "$imgurl<br />\n";
$imgn = (basename ($imgurl));
echo "$imgn<br />\n";
save_image($imgurl, $imgn);
}
如果我写出一个列表,save_image 函数就可以工作:
save_image('http://foo.html', foo1.jpg);
save_image('http://foo.html', foo1.jpg);
我希望我能够从数组中的匹配项中循环列表。
感谢您的关注。