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);
配列内の一致からリストをループできることを望んでいました。
ご覧いただきありがとうございます。