downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

http_put_stream> <http_put_data
[edit] Last updated: Fri, 18 Sep 2009

view this page in

http_put_file

(PECL pecl_http >= 0.10.0)

http_put_filePerform PUT request with file

Описание

string http_put_file ( string $url [, string $file [, array $options [, array &$info ]]] )

Performs an HTTP PUT request on the supplied url.

Вижте целият списък на опции на заявката.

Параметри

url

URL

file

The file to put

options

опции на заявката

info

Информация за заявка/отговор

Връщани стойности

При успех връща HTTP отговора като низ, или FALSE при неуспех.



add a note add a note User Contributed Notes http_put_file
D&#39;n Russler d_n att CatchMedia dott com 30-Aug-2010 04:13
After much frustration and very little documentation that I could find, I thought I'd offer this example of implementation of http_put_file with custom HTTP headers, and the corresponding ReceiveFile.php.

I do an http put with a customized header containing parameters for file processing.

<?php
      $header
= array(
                 
'file_size'   => $file_size
               
, 'file_name'   => $file_name
               
, 'md5sum'      => $md5sum
             
);

     
$URI = 'http://MyDomain.com/ReceiveFile.php';

      if ((
$f = @fopen($URI,'r'))) {
       
fclose($f);
        if (
$result = @http_put_file($URI, $file_path, array(
                   
headers => array(
                          
'X_CUSTOM_PUT_JSON'  => json_encode($header)
                          ,
'X_FRUIT'     => 'bananna'
                       
)
                  ,
useragent => 'Magic UnitTests'
                
)
                ,
$info))) {
          echo
str_replace("\n",'<BR>',$result);
        }
        else
           echo
'http failure';
     }
     else
        echo
"Can't find URI: [$URI]";
?>

ReceiveFile.php has:
<?php
      $CUSTOM_HEADER
= 'HTTP_X_CUSTOM_PUT_JSON';
     
$CHUNK = 8192;

      try {
        if (!(
$putData = fopen("php://input", "r")))
          throw new
Exception ("Can't get PUT data.");

        if (!(
array_key_exists($CUSTOM_HEADER, $_SERVER)))
          throw new
Exception ("Custom header missing.")

       
$json = json_decode($_SERVER[$CUSTOM_HEADER], true);
       
$this->logParams(__FUNCTION__, $json);
        foreach (
$json as $fld => $val)
          $
$fld = $val;

   
// now the params can be used like any other variable
    // see below after input has finished

       
$tot_write = 0;

     
// Create a temp file
       
if (!($tmpFileName = tempnam("/tmp", "PUT_FILE_")))
          throw new
Exception ("Can't create tmp file.");

     
// Open the file for writing
       
if (!($fp = fopen($tmpFileName, "w")))
          throw new
Exception ("Can't write to tmp file");

     
// Read the data a chunk at a time and write to the file
       
while ($data = fread($putData, $CHUNK)) {
         
$chunk_read = strlen($data);
          if ((
$block_write = fwrite($fp, $data)) != $chunk_read)
            throw new
Exception ("Can't write more to tmp file");

         
$tot_write += $block_write;
        }

        if ( !
fclose($fp) )
          throw new
Exception ("Can't close tmp file");

        unset(
$putData);

 
// Check file length and MD5
       
if ($tot_write != $file_size)
          throw new
Exception ("Wrong file size");

       
$md5_arr = explode(' ',exec("md5sum $tmpFileName"));
       
$md5 = $md5sum_arr[0];
        if (
$md5 != $md5sum)
          throw new
Exception ("Wrong md5");
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites