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

Трябва да получа изображение, изпратено чрез метода 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 post или html post? - 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