action_copy_web_to_file.php
Upload User: feiyaoda
Upload Date: 2016-11-21
Package Size: 9556k
Code Size: 11k
Category:

WEB Mail

Development Platform:

PHP

  1. <?php
  2. $step               = $_POST['step'];
  3. $url2get            = $_POST['url2get'];
  4. if ($_POST['next_step_number'])
  5. {
  6.     $next_step_number = $_POST['next_step_number'];
  7.     $next_step_number++;
  8. }
  9. else $next_step_number = '1';
  10. if ($url2get)
  11. {
  12.     // parsing and extracting all components
  13.     $components = parse_url ($url2get);
  14.     
  15.     $url_filename = basename($components['path']);
  16. }
  17.     
  18. function print_step($text)
  19. {
  20.     global $next_step_number;
  21.     echo "<span class="big_text">$next_step_number. $text</span><br /><br />n";
  22.     $printed_steps ++;
  23. }
  24. switch ($step)
  25. {
  26.     case 'do_copy':
  27.     {
  28.         set_time_limit(0);
  29.         ignore_user_abort();
  30.         
  31.         
  32.         $set_filename = $_POST['save_as_filename'];
  33.         
  34.         $scheme     = $_POST['request_values']['scheme'];
  35.         $host       = $_POST['request_values']['host'];
  36.         $port       = $_POST['request_values']['port'];
  37.         $user       = $_POST['request_values']['user'];
  38.         $pass       = $_POST['request_values']['pass']; 
  39.         $path       = $_POST['request_values']['path']; 
  40.         $query      = $_POST['request_values']['query'];
  41.         $fragment   = $_POST['request_values']['fragment'];
  42.         
  43.                             $built_url  = $scheme.'://';        
  44.         if ($user || $pass) $built_url .= $user.':'.$pass.'@';
  45.                             $built_url .= $host;
  46.         if ($port)          $built_url .= ':'.$port;
  47.                             $built_url .= $path;
  48.         if ($query)         $built_url .= '?'.$query;
  49.         if ($fragment)      $built_url .= '#'.$fragment;        
  50.         
  51.         if ($_POST['override_filename'])
  52.             $destination = $target_folder.$set_filename;
  53.         else
  54.             $destination = $target_folder.$url_filename;
  55.         // checking if destination already exists
  56.         
  57.         if (!$_POST['overwrite'] && is_file($destination))
  58.         {
  59.             echo "<span class="error_box">Destination <b>$destination</b> already exists!</span>n";
  60.             echo "<form action=execute.php method=POST>n";
  61.             migrate_across_request();
  62.             echo "<input type=hidden name=step value=do_copy>n";
  63.             echo "<input type=hidden name=next_step_number value=1>n"; 
  64.             echo "<input type=hidden name="request_values[scheme]" value="".$_POST['request_values']['scheme']."">n";
  65.             echo "<input type=hidden name="request_values[host]" value="".$_POST['request_values']['host']."">n";
  66.             echo "<input type=hidden name="request_values[port]" value="".$_POST['request_values']['port']."">n";
  67.             echo "<input type=hidden name="request_values[user]" value="".$_POST['request_values']['user']."">n";
  68.             echo "<input type=hidden name="request_values[pass]" value="".$_POST['request_values']['pass']."">n";
  69.             echo "<input type=hidden name="request_values[path]" value="".$_POST['request_values']['path']."">n";
  70.             echo "<input type=hidden name="request_values[query]" value="".$_POST['request_values']['query']."">n";
  71.             echo "<input type=hidden name="request_values[fragment]" value="".$_POST['request_values']['fragment']."">n";
  72.             echo "<input type=hidden name="override_filename" value="".$_POST['override_filename']."">n";        
  73.             echo "<input type=hidden name="save_as_filename" value="".$_POST['save_as_filename']."">n";        
  74.             echo "<input type=hidden name="overwrite" value="1">n";        
  75.             echo "<input type=hidden name="binary_mode" value="".$_POST['binary_mode']."">n";        
  76.             echo "<input type=hidden name="buffer_size" value="".$_POST['buffer_size']."">n";
  77.             echo "<input type="submit" name="submit" value="Overwrite">n";
  78.             echo "</form>n";
  79.             die();
  80.         }
  81.         echo "<table>n";
  82.         echo "<tr><th>source</th><td>$built_url</td></tr>n";
  83.         echo "<tr><th>destination</th><td>$destination</td></tr>n";
  84.         echo "</table>n";        
  85.         
  86.         // now opening files
  87.         $begin_copy_time = getmicrotime();
  88.         $binary = ($_POST['binary_mode']) ? 'b' : '';
  89.         $fp_src = fopen($built_url,'r'.$binary);
  90.         if (!$fp_src)
  91.             die("<span class="error_box">impossible to open source in read mode!</span>n");
  92.             
  93.         $fp_dst = fopen($destination,'w'.$binary);
  94.         if (!$fp_dst)
  95.             die("<span class="error_box">impossible to open destination in write mode!</span>n");        
  96.             
  97.         flush();// may not work, depends on buffering. see flush() in PHP manual for more informations
  98.         // copying
  99.         $buffer_size = $_POST['buffer_size'];
  100.         if (false == settype($buffer_size,integer)) 
  101.             die('invalid value for buffer size');
  102.         $buffer_size = abs($buffer_size);
  103.         
  104.         
  105.         while ($buffered = fread($fp_src,8048))
  106.         {
  107.             fwrite($fp_dst,$buffered,8048);
  108.         }
  109.         
  110.         fclose($fp_src);
  111.         fclose($fp_dst);
  112.         $end_copy_time = getmicrotime();
  113.         
  114.         if (is_file($destination))
  115.         {
  116.             echo "<span class="success_box">copy may have worked. please check it's properties</span><br><br>n";
  117.             $fsize = filesize($destination);
  118.             $ttime = $end_copy_time - $begin_copy_time; 
  119.             echo "<table>n";
  120.             echo "<tr><th>Destination file size</th><td>".FormatTailleFichier($fsize,'o')." ($fsize)</td></tr>n";
  121.             echo "<tr><th>Total time</th><td>".timetohms($ttime)." (".number_format($ttime,2)." seconds)</td></tr>n";
  122.             echo "<tr><th>Speed</th><td>".number_format(($fsize/$ttime),2)." octets/second</td></tr>n";
  123.             echo "</table>n";
  124.         }
  125.         else
  126.         {
  127.             echo "<span class="error_box">Something has failed. destination file doesn't exists!</span>n";    
  128.         }
  129.         
  130.         
  131.         break;
  132.     }
  133.     case 'show_parsed_url':
  134.     {
  135.         print_step('Confirm Parameters');
  136.         echo "<form action=execute.php method=POST>n";
  137.         migrate_across_request();
  138.         echo "<input type=hidden name=step value=do_copy>n";
  139.         echo "<input type=hidden name=next_step_number value=1>n";
  140.         echo "<input type=hidden name=url2get value="".$_POST['url2get']."">n";
  141.         echo "<table>n";
  142.         /*
  143.         echo "<tr><td colspan=2><i>Current Parameters</i></td></tr>n";
  144.         echo "<tr><th>URL</th><td>$url2get</td></tr>n";
  145.         echo "<tr><th>scheme</th><td>$components[scheme]</td></tr>n";
  146.         echo "<tr><th>host</th><td>$components[host]</td></tr>n";
  147.         echo "<tr><th>port</th><td>$components[port]</td></tr>n";
  148.         echo "<tr><th>basic auth user</th><td>$components[user]</td></tr>n";
  149.         echo "<tr><th>basic auth pass</th><td>$components[pass]</td></tr>n";
  150.         echo "<tr><th>path</th><td>$components[path]</td></tr>n";
  151.         echo "<tr><th>query</th><td>$components[query]</td></tr>n";
  152.         echo "<tr><th>fragment</th><td>$components[fragment]</td></tr>n";
  153.         echo "<tr><td colspan=2>&nbsp;</td></tr>n";      
  154.         */
  155.         
  156.         echo "<tr><td colspan=2><i>Overridde Parameters</i></td></tr>n";  
  157.         echo "<tr><th>scheme</th><td><input type=text name="request_values[scheme]" value="$components[scheme]" style="width:300px"></td></tr>n";
  158.         echo "<tr><th>host</th><td><input type=text name="request_values[host]" value="$components[host]" style="width:300px"></td></tr>n";
  159.         echo "<tr><th>port</th><td><input type=text name="request_values[port]" value="$components[port]" style="width:300px"></td></tr>n";
  160.         echo "<tr><th>basic auth user</th><td><input type=text name="request_values[user]" value="$components[user]" style="width:300px"></td></tr>n";
  161.         echo "<tr><th>basic auth pass</th><td><input type=text name="request_values[pass]" value="$components[pass]" style="width:300px"></td></tr>n";
  162.         echo "<tr><th>path</th><td><input type=text name="request_values[path]" value="$components[path]" style="width:300px"></td></tr>n";
  163.         echo "<tr><th>query</th><td><input type=text name="request_values[query]" value="$components[query]" style="width:300px"></td></tr>n";
  164.         echo "<tr><th>fragment</th><td><input type=text name="request_values[fragment]" value="$components[fragment]" style="width:300px"></td></tr>n";
  165.        
  166.         echo "<tr><td colspan=2>&nbsp;</td></tr>n";      
  167.         echo "<tr><td colspan=2><i>Save As</i></td></tr>n";
  168.         echo "<tr><th>override file name</th><td><input type=radio name="override_filename" value="1" checked>Yes <input type=radio name="override_filename" value="0" checked>No </td></tr>n";        
  169.         echo "<tr><th>file name</th><td><input type=text name="save_as_filename" value="".urldecode($url_filename)."" style="width:300px"></td></tr>n";        
  170.         
  171.         echo "<tr><td colspan=2>&nbsp;</td></tr>n";      
  172.         echo "<tr><td colspan=2><i>Options</i></td></tr>n";        
  173.         echo "<tr><th>overwrite file</th><td><input type=radio name="overwrite" value="1" checked>Yes <input type=radio name="overwrite" value="0" checked>No </td></tr>n";        
  174.         echo "<tr><th>binary mode (Windows only)</th><td><input type=checkbox name="binary_mode" value="1" checked></td></tr>n";        
  175.         echo "<tr><th>copy buffer size</th><td><input type=text name="buffer_size" value="".(1024*32)."" style="width:300px"></td></tr>n";                
  176.         
  177.         echo "<tr><td colspan=2>&nbsp;</td></tr>n";          
  178.         echo "<tr><td colspan=2 align=center><input type="submit" name="submit" value="Copy"></td></tr>n";
  179.         echo "</table>n";  
  180.         echo "WARNING : next page could be long to show, depending of what you want to upload. But as far as it's permitted, set time limit is set to infinite and ignore_user_abort() is called. <b>So even if this page finished rendering, download may continue... It depends only of server configuration</b>n";
  181.         break;
  182.     }
  183.     
  184.     default:
  185.     {
  186.         print_step('Give URL of ressource you want to download');
  187.         echo "<form action=execute.php method=POST>n";
  188.         migrate_across_request();
  189.         echo "<input type=hidden name=step value=show_parsed_url>n";
  190.         echo "<input type=hidden name=next_step_number value=1>n";
  191.         echo "<table>n";
  192.         echo "<tr><th>Paste URL</th><td><input type="text" name="url2get" value="" style="width:300px"></td></tr>n";
  193.         echo "<tr><td colspan=2 align=center><input type="submit" name="submit" value="Next"></td></tr>n";
  194.         echo "</table>n";
  195.     }
  196. }