it-roy-ru.com

Скачать изображение с URL, используя php код?

Как я могу использовать 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 и доступен для записи.

15
Sarah

Вы не можете сохранить изображение с существующим кодом, потому что вы не указали имя файла. Вам нужно сделать что-то вроде:

$filenameIn  = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);

$contentOrFalseOnFailure   = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);
31
Jon

В чем ваша ошибка? Но у вас есть правильный способ делать то, что вы хотите сделать.

Просто позаботьтесь о своем коде, я вижу file_put_contents($img_path,, но $img_path - это путь к папке . Вам нужно написать что-то вроде:

пример

$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");
1
NeeL

Я добавил одно условие к принятому ответу, чтобы проверить тип изображения следующим образом:

 if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
     $filename = './images/'.basename($_POST['text']);
     file_put_contents($filename, $content);
 }

из приведенного выше примера я показываю, как проверить png изображения перед загрузкой файлов, и для других типов контента вы можете найти здесь .

0
Janith Chinthana

file_put_contents() требует, чтобы первым параметром было имя файла, а не путь.

0
heyanshukla
file_put_contents($img_path, $content); 

К чему ты клонишь ?? я думаю, что вы допустили ошибку с get и put. или пропустил, чтобы указать полный путь, включая имя файла и расширение

0
Rohit Vipin Mathews