2012-03-21 2 views
0

Я загрузил изображение с помощью file_get_contents из URL, а затем загрузил его на свой сайт, используя file_put_contents, изображение появится в указанном каталоге, однако оно имеет нулевое значение. Я изменил разрешения на 777 в этом каталоге и родительских каталогах, но ничего не произошло.Загружено изображение с помощью `file_put_contents` 0 байтами (пусто)?

Я уже пробовал один и тот же код в локальном хосте, и он отлично работал.

Кстати, я использую сайт joomla и компонент RSform Pro, он используется для создания форм и предоставляет область, где вы можете редактировать данные POST перед сохранением в базе данных. Вот код.

$content = file_get_contents($_POST['image_url']); 

$date = date ('d-m-Y_h-m-i'); $random = rand(0,1000); 
$name = 'mysite_'.$date.$random.'.png'; 

$filename = '/home/mysite/images/'.$name; 

file_put_contents($filename, $content); 
+0

Вы можете оставить свой код? – scibuff

+4

Убедитесь, что на самом деле есть данные из 'file_get_contents'. –

+0

@scibuff Я редактировал вопрос. – Sarah

ответ

2

Где я начинаю, есть так много плохого этот код ...

  1. Вы должны проверить возвращаемое значение file_get_contents и обеспечить ваш хост позволяет retriving удаленных данных (allow_url_fopen установлено значение Вкл в php.ini)
  2. После этого все остальное ужасно ошибочно и ударяет дыру в вашем приложении. Результат, который вы храните в переменной $ content, должен быть записан в уникальный временный файл, единственный правильный способ генерации которого используется функция tempnam().
  3. После того, как файл_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла_файла.
  4. Если предыдущий шаг завершился успешно, используйте rename(), чтобы переместить файл в постоянное хранилище, используя имя, которое вряд ли будет повторяться когда-либо. для этого используйте $filename = hash('sha256', openssl_random_pseudo_bytes(16)) . 'png'., затем сохраните полученное имя файла, чтобы его можно было использовать для построения ссылок, которые ваше приложение будет показывать пользователям.
+0

Спасибо за ответ! Я проверил php.ini, и он установлен в положение ON. Однако функция 'file_get_contents' ничего не возвращает. – Sarah

+0

Убедитесь, что для display_errors установлено значение Вкл. В php.ini ... –

Смежные вопросы