Register now and start sharing your code snippets.
-->

PHP file upload gotchas

PHP posted 9 months ago by christian

PHP file upload works in mysterious ways:

   1  http://us3.php.net/manual/en/ini.core.php#ini.post-max-size
   2  http://fi.php.net/manual/en/features.file-upload.php#73762
   3  http://de3.php.net/manual/en/features.file-upload.errors.php

Tagged gotcha, php, file, upload

How to upload a file with PHP and lib_curl

PHP posted 10 months ago by christian

This is an example of how to upload a file from PHP to another server that may or may not be running PHP .

Note that using Pear’s HTTP _Request package is probably easier.

   1  <?php
   2    require_once('Var_Dump.php');
   3    Var_Dump::displayInit(array('display_mode' => 'HTML4_Text'), array('mode' => 'normal','offset' => 4));
   4  
   5    $url = 'www.aktagon.com/upload';
   6    $file = '/tmp/file_to_upload';
   7    $post_data = array();
   8  
   9    $post_data['username'] = '';
  10    $post_data['password'] = '';
  11    $post_data['file'] = "@$file";
  12  
  13    $ch = curl_init();
  14  
  15    curl_setopt($ch, CURLOPT_URL, $url);
  16    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  17  #    'Cookie: xxxx',
  18  #    'Content-Type: xxxx'
  19    ));
  20    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  21    curl_setopt($ch, CURLOPT_POST, true);
  22    #curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
  23  
  24    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  25  
  26    $response  = curl_exec($ch);
  27    $info      = curl_getinfo($ch); 
  28    $http_code = $info['http_code'];
  29    $speed     = round($info['speed_upload'] / 1024);
  30    $size      = round($info['size_upload'] / 1024);
  31  
  32    if($http_code != 200)
  33    {
  34      echo "Upload failed with HTTP code $http_code. Uploaded $size kilobytes with $speed kilobytes/s.<br/>";
  35      echo "<h1>Response</h1><pre>$response</pre><h1>Debug information</h1>";
  36  
  37      Var_Dump::display($info);
  38    }
  39    else
  40    {
  41      echo "Uploaded successful. Uploaded $size kilobytes with $speed kilobytes / s.<br/>";
  42      echo "<h1>Response</h1><pre>$response</pre>";
  43    }
  44    curl_close($ch);
  45  ?>
  46  

You can remove the Var_Dump code (Pear module), if you haven’t installed it, or don’t need it.

Tagged php, file, upload, client, pear