目标:搭一个简单的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