it-swarm.com.de

Bild von URL mit PHP-Code herunterladen?

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.

15
Sarah

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);
31
Jon

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");
1
NeeL

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 .

0

Für file_put_contents() muss der erste Parameter der Dateiname und nicht der Pfad sein.

0
heyanshukla
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

0