Comment utiliser php pour télécharger une image à partir d'une URL (par exemple: https://www.google.com/images/srpr/logo3w.png ) puis enregistrez-la? jusqu'ici, cela me donne une erreur dans la fonction '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;
?>
Cela me donne l'erreur:
[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php
Le répertoire /images/
est situé dans le même répertoire que le fichier php et est accessible en écriture.
Vous ne pouvez pas enregistrer l'image avec votre code existant car vous ne fournissez pas de nom de fichier. Vous devez faire quelque chose comme:
$filenameIn = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);
$contentOrFalseOnFailure = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);
Quelle est ton erreur? Mais vous avez la bonne façon de faire ce que vous voulez faire.
Faites attention dans votre code, je peux voir file_put_contents($img_path,
mais $img_path
est un chemin d'accès à un dossier . Vous devez écrire quelque chose comme:
Exemple
$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");
J'ai ajouté une condition à la réponse acceptée pour vérifier le type d'image comme suit,
if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
$filename = './images/'.basename($_POST['text']);
file_put_contents($filename, $content);
}
À partir de l'exemple ci-dessus, je montre comment vérifier les images png avant de télécharger les fichiers et pour plus de types de contenu, vous pouvez trouver ici .
file_put_contents()
requiert que le premier paramètre soit un nom de fichier et non le chemin.
file_put_contents($img_path, $content);
A quoi mettez-vous ?? Je pense que vous avez commis une erreur avec get
et put
. ou manquant pour spécifier le chemin complet, y compris le nom du fichier et son extension