1.一个简单的文件上传
例:
upload_file.html
upload_file.html上传文件:
upload_file.php
print "
";
$store_dir = 'd:wamp64wwwphptest甥汰慯d';//文件上传后存储在服务器的路径
$uploadfile = "$store_dir".basename($_FILES['sendfile']['name']);//上传文件的原始名字
$uploadfile_tmp = $_FILES['sendfile']['tmp_name']; //上传文件的临时名字
$err_msg = $_FILES['sendfile']['error']; //上传文件时产生的错误信息
if ( $err_msg ) { //如果存在错误代码则打印出来
print "错误代码:$err_msg
";
}
if (!is_writeable($store_dir)){//检查上传文件夹是否可写,不可写则打印错误信息并退出
print "$store_dir 目录不可写";
exit;
}
else {
print "$store_dir 目录可写"; //可写则打印正确信息
}
if ( isset ($_FILES['sendfile']) ) {//检查上传文件是否存在,如存在则对其进行下一步操作
if (is_uploaded_file($uploadfile_tmp)) {
print "文件检验成功";
}
else {
print "文件检验失败,可能遭受文件上传攻击!";
exit;
}
if (move_uploaded_file($uploadfile_tmp, $uploadfile)) {//对上传的合法文件,将其重命名并移动服务器的上传文件夹中
print "文件移动成功";
}
else {
print "移动文件失败,可能遭受文件上传攻击!";
exit;
}
print "文件上载成功!
";
}
else {
print "文件上载失败!
";
}
print '$_FILES=';
print_r($_FILES);//打印$_FILES数组信息
print "
";
?>
结果:
2.俩个文件同时上传
例:
upload_file_m.html
upload_file.html上传文件1:
上传文件2:
upload_file_m.php
print "
";
$store_dir = 'd:wamp64wwwphptest甥汰慯d';//文件上传后存储在服务器的路径
foreach ($_FILES["sendfile"]["error"] as $key => $error) { //遍历方式取出上传文件变量数组$_FILES['sendfile']中每个error值
if ($error == UPLOAD_ERR_OK) {
$uploadfile_tmp = $_FILES['sendfile']['tmp_name'][$key];
$uploadfile = "$store_dir". basename($_FILES['sendfile']["name"][$key]);
move_uploaded_file( $uploadfile_tmp, $uploadfile );//利用循环移动上传所有文件,从而实现对文件的保存
}
}
print '$_FILES=';
print_r($_FILES);//打印$_FILES数组信息
print "
";
?>
结果: