1

次のようにcurlを使用してWebサイトから画像を保存できます:

//$fullpath = "/images/".basename($img);
$fullpath = basename($img);

$ch = curl_init($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$rawData = curl_exec($ch);
curl_close($ch);

if(file_exists($fullpath)) {
    unlink($fullpath);
}

$fp = fopen($fullpath, 'w+');
fwrite($fp, $rawData);
fclose($fp);

ただし、これは、保存機能を実行するphpファイルが入っている同じフォルダーにのみ画像を保存します。画像を特定のフォルダーに保存したいと思います。$fullpath = "/images/".basename($img); を使用してみました。(私の関数のコメントアウトされた最初の行)しかし、これはエラーになります:

ストリームを開けませんでした: そのようなファイルまたはディレクトリはありません

私の質問は、プロジェクト内の特定のフォルダーにファイルを保存するにはどうすればよいですか? もう 1 つの質問は、フォルダに保存する画像のファイル名を変更するにはどうすればよいですか? たとえば、接頭辞 siteimg_ を画像のファイル名に追加したいと思います。これを実装するにはどうすればよいですか?

更新:コードをもう少しいじってみた後、パスに関する最初の問題を解決することができました。$fullpath = "/images/".basename($img) を使用する代わりに、fopen の直前に変数を追加し、次のように fopen メソッドに追加しました。

$path = "./images/";
$fp = fopen($path.$fullpath, 'w+');

奇妙なことに、それはうまくいきました。だから今、私はファイルの名前を変更するという1つの問題に直面しています。助言がありますか?

4

1 に答える 1

1

PHP のファイル パスはサーバー パスです。/imagesサーバーにフォルダーがあるとは思えません。

imagesたとえば、 PHP スクリプトと同じディレクトリにフォルダがあると仮定して、現在の PHP ファイルから相対パスを作成してみてください...

$path = __DIR__ . '/images/' . basename($img);

また、このもっと単純なスクリプトを試してみませんか

$dest = __DIR__ . '/images/' . basename($img);
copy($img, $dest);
于 2013-09-18T03:32:01.753 に答える