Использование php: // input и file_put_contents - PullRequest
2 голосов
/ 23 октября 2010

Я получаю файлы (изображения), загруженные с помощью Ajax в мой PHP-скрипт, и заставил его работать следующим образом:

$input = fopen("php://input", "r");
file_put_contents('image.jpg', $input);

Очевидно, что перед этой операцией я буду очищать ввод.* Одна вещь, которую я хотел проверить, - это размер файла до создания нового файла:

$input = fopen("php://input", "r");
$temp = tmpfile();
$realsize = stream_copy_to_stream($input, $temp);
if ($realsize === $_SERVER["CONTENT_LENGTH"]) {
  file_put_contents('image.jpg', $temp);
}

И это не работает.Файл создан, но имеет размер 0 байт, поэтому содержимое не помещается в файл.Я не очень знаком с использованием потоков, но я не понимаю, почему это не должно работать, поэтому я обращаюсь к вам за помощью.Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 26 октября 2010

Решение было обманчиво простым:

$input = fopen("php://input", "r");
file_put_contents($path, $input);
1 голос
/ 23 октября 2010

Вы используете файловые ресурсы, как если бы они были строками. Вместо этого вы можете снова использовать stream_copy_to_stream:

stream_copy_to_stream($temp, fopen('image.jpg', 'w'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...