php文件上传

目标:搭一个简单的http上传服务,还有客户端
环境:php-4.3

在服务端准备一个action.php,内容如下:

<?php
  // 在 4.1.0 以前的 PHP 中,需要用 $HTTP_POST_FILES 代替 $_FILES。
  // 在 4.0.3 以前的 PHP 中,需要用 copy() 和 is_uploaded_file() 来代替 move_uploaded_file()。
 
  $uploaddir = '/tmp/upload/';
  $uploadfile = $uploaddir. $_FILES['file']['name'];
  print "<pre>";
  if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $_FILES['file']['name']))
  {
      print "File is valid, and was successfully uploaded.  Here's some more debugging info:\n";
      print_r($_FILES);
  }
  else
  {
      print "Possible file upload attack!  Here's some debugging info:\n";
      print_r($_FILES);
  }
  print "</pre>";
?>

设置php.ini

参数 设置 说明
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir -- 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 2000m 允许上传文件大小的最大值。默认为2M
post_max_size 2000m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 3600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 3600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 200m 每个PHP页面所吃掉的最大内存,默认8M

重启apache使服务生效

客户端upload.php代码:
<?php
  
  $ch = curl_init();
 
  $data = array('name' => 'cookie_log.txt', 'file' => '@/home/cookie_log.txt');
 
  curl_setopt($ch, CURLOPT_URL, 'http://localhost/action.php');
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 
  curl_exec($ch);

?>
运行upload.php,即把cookie_log.txt上传。

参考网站:
http://kb.discuz.net/index.php?title=PHP%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0

相关文章

分类

留言:

关于文章

This page contains a single entry by DongHao published on 07 3, 2008 4:28 PM.

草原之行 (三) was the previous entry in this blog.

抢手货 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.