как прочитать содержимое из запроса PUT и получить содержимое файла в переменной php - PullRequest
0 голосов
/ 27 января 2012

ниже код, который я хочу изменить

 $input = fopen("php://input", "r");
        $temp = tmpfile();
        $realSize = stream_copy_to_stream($input, $temp);
        fclose($input);

        if ($realSize != $this->getSize()){            
            return false;
        }

        $target = fopen($path, "w");        
        fseek($temp, 0, SEEK_SET);
        stream_copy_to_stream($temp, $target);
        fclose($target);

Я хочу сохранить содержимое в памяти и перенести его на другой сервер, не сохраняя его на сервере apache.

когда я пытаюсь вывести содержимое, я вижу только идентификатор ресурса № 5. Любые предложения, комментарии очень ценятся спасибо

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Чтобы получить содержимое потока:

rewind($temp); // rewind the stream to the beginning
$contents = stream_get_contents($temp);
var_dump($contents);

Или используйте file_get_contents, как упоминает @deceze.


UPDATE

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

$put = stream_get_contents(STDIN); // STDIN is an open handle to php://input
if ($put) {
  $target = fopen('/storage/put.txt', "w");        
  fwrite($target, $put);
  fclose($target);
}
2 голосов
/ 27 января 2012

Код, который вы открываете, открывает файловые дескрипторы, которые сами по себе не являются содержимым .Чтобы получить содержимое в переменную, просто прочитайте его, как любой другой файл:

$put = file_get_contents('php://input');
...