Как я могу отправить и получить запрос на размещение с одним и тем же скриптом

Мне нужно получить изображение, отправленное методом PUT. Поэтому я пишу скрипт для тестирования. Я хочу получать и отправлять его с помощью одного и того же скрипта. Как я могу реализовать это? Следующий вариант ничего не повторяет и содержит строку о Поздравлениях с тем, что метод http был отправлен нормально.

<?php 
//if they DID upload a file...
var_dump(file_get_contents("php://input"));
if($_FILES['photo']['tmp_name'])
{
    echo $_FILES['photo']['error'];
    if($_FILES['photo']['error']==0)
    {
        //now is the time to modify the future file name and validate the file
        $new_file_name = strtolower($_FILES['photo']['tmp_name']); //rename file
        $message = 'Congratulations!!!!!!!.';
            //move it to where we want it to be
            move_uploaded_file($_FILES['photo']['tmp_name'], 'url.../1.jpg');

            echo'Congratulations!  Your file was accepted.';
            $image = fopen('url.../1.jpg', "rb");
            var_dump($image);
            $ch = curl_init();


            /* Set cURL options. */
            curl_setopt($ch, CURLOPT_URL, "http://url.../upload.php");
            curl_setopt($ch, CURLOPT_PUT, true);
            curl_setopt($ch, CURLOPT_INFILE, $image);
            curl_setopt($ch, CURLOPT_INFILESIZE, strlen($image));

            /* Execute the PUT and clean up */
            $result = curl_exec($ch);
            fclose($image);             //recommended to close the fileshandler after action
            curl_close($ch);
    }
    //if there is an error...
    else
    {
        //set that to be the returned message
        $message = 'Ooops!  Your upload triggered the following error:  '.$_FILES['photo']['error'];
    }
}
else
{
    echo"WORKS";
}

person Sergey Scopin    schedule 20.10.2014    source источник
comment
Вы хотите отправить обратно изображение в браузер?   -  person Veeru    schedule 20.10.2014
comment
Да, мне нужно для теста. Далее Другой человек с устройства отправит мне это изображение.   -  person Sergey Scopin    schedule 20.10.2014


Ответы (2)


Самый простой способ отправить изображение обратно в браузер — использовать URL-адрес.

  1. Обработать изображение
  2. Сохраните изображение где-нибудь на своем сервере
  3. Отправить URL обратно в браузер.
  4. Используйте тег в браузере и покажите свое изображение.
<?PHP 
  $imgFile="";
  if($_FILES['photo']['tmp_name'])
  {
      ///Your existing code
      $imgFile="http://" . $_SERVER['HTTP_HOST'] .'/Your image url here'; 
      //Ex:\\ http://yourserver.com/images/1.jpg - 
      //you can take this from your move_upload_file
  }   

?>
<img src="<?PHP echo $imgFile; ?>" />

Полезные ссылки Как получить файл через HTTP PUT с PHP

Даже для спокойной службы вы можете использовать json или xml для отправки URL-адреса изображения. PUT не является хорошей идеей, если вам по какой-либо причине не нужно отправлять данные изображения. Может быть, вам стоит пересмотреть свою логику?

person Veeru    schedule 20.10.2014
comment
Что ж, я делаю первые 3 пункта, как вы можете видеть в моем коде. Как я могу сделать 4-й пункт? Не имею представления. Только что попробовал var_dump file_get_contents(php://input) и показывает ноль. - person Sergey Scopin; 20.10.2014
comment
Вы используете сообщение ajax или сообщение html? - person Veeru; 20.10.2014
comment
Ну, html пост. Для отправки я использую метод put. - person Sergey Scopin; 20.10.2014
comment
Но я хочу отправить его методом put. Насколько я понимаю, этот метод просто повторяет изображение с определенным URL-адресом. - person Sergey Scopin; 20.10.2014
comment
Вероятно, вы неправильно задали вопрос. Вы хотите отправить на другой сервер через put? - person Veeru; 20.10.2014
comment
Нет, я хочу отправить на свой сервер через put, чтобы иметь возможность протестировать методы put на моем сервере, потому что следующий человек отправит мне с помощью метода put некоторую информацию с устройства. - person Sergey Scopin; 20.10.2014
comment
Мне это нужно для создания софта для получения информации. - person Sergey Scopin; 20.10.2014
comment
Вы создаете какой-то API-сервис? - person Veeru; 20.10.2014
comment
chat.stackoverflow.com/rooms/63323/veeru - мы можем поболтать здесь, не рекомендуется здесь долго разговаривать . - person Veeru; 20.10.2014

Ошибки были: strlen($image) strlen, если неправильно, должен быть размер файла, а в моем URL-адресе у меня было www. Это не netion в моем посте, но это была ошибка. Мне помог более опытный программист. r.php для чтения потока:

$res = file_get_contents("php://input");

$file = fopen('1.txt', "w");
fputs($file, $res);
fclose($file);

var_dump($res);

s.php для получения потока и инициализации r.php

$image = fopen('/var/www/testfiles/1.jpg', "rb");
var_dump($image);
$ch = curl_init();


/* Set cURL options. */

    curl_setopt($ch, CURLOPT_URL, "http://url withot www/r.php");
    curl_setopt($ch, CURLOPT_PUT, true);
    curl_setopt($ch, CURLOPT_INFILE, $image);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize('/var/www/testfiles/1.jpg'));

    /* Execute the PUT and clean up */
    $result = curl_exec($ch);
    fclose($image);             //recommended to close the fileshandler after action
    curl_close($ch);

    die("OK");
person Sergey Scopin    schedule 20.10.2014