Intereting Posts
Как организовать просмотр страны / города / города в MVC Как передать массив Javascript через JQuery Post, чтобы все его содержимое было доступно через массив PHP $ _POST? jQuery: как остановить функцию AJAX, избегая строки JSON, используемой для данных POST Как добавить параметры фильтра в контроллеры в Laravel? Вставка времени в базу данных Почему count (DOMNode-> childNodes) возвращает неверное количество детей? (PHP и XML) PHP json_encode возвращает значение null из символа Unicode PHP Сравнение ключей и изменение определенных значений из многомерного массива с соответствующими значениями ключей из простого массива Объект-объект «некоторая сущность» не может быть найден PHP XML Удалить родителя использование массива в качестве источника данных для CGridView PHP – Как заставить ошибки Shell выходить на экран Использовать привязку после отправки формы POST Проблема с файлом содержимого PHP MYSQL Правильно ли я понял PHP-сессии?

Загрузить изображение с URL-адреса с помощью php-кода?

Как я могу использовать php для загрузки изображения из URL-адреса (например: http://img.ruphp.com/url/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); 

Если у вас allow_url_fopen установлено значение true:

  $url = 'http://example.com/image.php'; $img = '/my/folder/flower.gif'; file_put_contents($img, file_get_contents($url)); 

Другие используют cURL:

  $ch = curl_init('http://example.com/image.php'); $fp = fopen('/my/folder/flower.gif', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); 

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

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

пример

 $img_path="home/downloads/my_images"; file_put_contents($img_path."/flower.jpg"); 
 file_put_contents($img_path, $content); 

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

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

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

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

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