Wie kann ich mit php ein Bild von einer URL herunterladen (zB: https://www.google.com/images/srpr/logo3w.png ) und es dann speichern? .__ Bisher gibt es einen Fehler in der Funktion '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;
?>
Es gibt mir den Fehler:
[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php
Das /images/
-Verzeichnis befindet sich im selben Verzeichnis der PHP-Datei und ist beschreibbar.
Sie können das Bild nicht mit Ihrem vorhandenen Code speichern, da Sie keinen Dateinamen angeben. Sie müssen etwas tun wie:
$filenameIn = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);
$contentOrFalseOnFailure = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);
Was ist dein Fehler? Aber Sie haben den richtigen Weg, um das zu tun, was Sie wollen.
Passen Sie einfach auf Ihren Code auf, ich kann file_put_contents($img_path,
sehen, aber $img_path
ist ein Pfad zu einem Ordner.
Beispiel
$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");
Ich habe der akzeptierten Antwort eine Bedingung hinzugefügt, um den Bildtyp wie folgt zu prüfen:
if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
$filename = './images/'.basename($_POST['text']);
file_put_contents($filename, $content);
}
von obigem Beispiel zeige ich, wie man png-Bilder vor dem Download der Dateien überprüft. Weitere Inhaltstypen finden Sie hier .
Für file_put_contents()
muss der erste Parameter der Dateiname und nicht der Pfad sein.
file_put_contents($img_path, $content);
Zu was setzen Sie? Ich denke, Sie haben einen Fehler mit get
und put
gemacht. oder nicht angegeben, um den vollständigen Pfad einschließlich Dateiname und Erweiterung anzugeben