Phpを使用してURLから画像をダウンロードするには(たとえば: https://www.google.com/images/srpr/logo3w.png )、保存するにはどうすればよいですか?これは私がこれまでに思いついたもので、「file_put_contents」関数でエラーが発生します。
<form method="post" action="">
<textarea name="text" cols="60" rows="10">
</textarea><br/>
<input type="submit" class="button" value="submit" />
</form>
<?php
$img = "no image";
if (isset($_POST['text']))
{
$content = file_get_contents($_POST['text']);
$img_path = '/images/';
file_put_contents($img_path, $content);
$img = "<img src=\"".$img_path."\"/>";
}
echo $img;
?>
それは私にエラーを与えます:
[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php
/images/
ディレクトリは、phpファイルと同じディレクトリにあり、書き込み可能です。
ファイル名を指定しないため、既存のコードで画像を保存することはできません。次のようなことをする必要があります。
$filenameIn = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);
$contentOrFalseOnFailure = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);
あなたのエラーは何ですか?しかし、あなたはやりたいことをする正しい方法を持っています。
コードに注意してください、file_put_contents($img_path,
だが $img_path
はフォルダーへのパスです。次のようなものを書く必要があります。
例
$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");
受け入れられた回答に1つの条件を追加して、画像タイプを次のように確認しました。
if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
$filename = './images/'.basename($_POST['text']);
file_put_contents($filename, $content);
}
上記の例から、ファイルをダウンロードする前にpng画像を確認する方法と、より多くのコンテンツタイプについて here を見つけることができます。
file_put_contents()
では、最初のパラメーターがパスではなくファイル名である必要があります。
file_put_contents($img_path, $content);
何に入れますか? get
とput
を間違えたと思います。または、ファイル名と拡張子を含む完全なパスを指定しなかった