php文件上传代码编写过程
先判断是否上传文件
如果有再来判断上传中是否出错
如果出错则提示出错信息
如查没出错再判断文件类型
如果类型符合条件再判断指定目录中有没有存在该文件
如果没有就把该文件移至指定目录
在php中上传文件必须知道的几个东西
$_FILES[myfile][name] 是指被上传文件的名称
$_FILES[myfile][type] 是指被上传文件的类型
$_FILES[myfile][size] 是指被上传文件的大小单位为字节(B)
$_FILES[myfile][tmp_name] 是指被上传文件存在服务器中的临时副本文件名称文件被移动到指定目录后临文件将被自动消毁
$_FILES[myfile]["error"] 是指由文件上传中有可能出现的错误的状态码关于各状态含义后在会说明
先来看一下HTML部分
代码如下 复制代码
?<form action="uploadphp" method="post" enctype="multipart/formdata">
上传<input type="file" name="myfile" />
<input type="submit" name="submit" value="上传" />
</form>
说明
form标答的action="uploadphp"是指点击这个form中的submit的时候这个上传命令会被发送到这个叫 uploadphp的页面去处理method="post"是指以post方式去送enctype="multipart/formdata"属性规定了在提交这个表单时要使用哪种内容类型在表单需要二进制数据时比如文件内容请使用"multipart/formdata"如果要上传文件这个属性是必要的input中的type="file"时规定了应该把输入作为文件来处理并且在input后面会有一个浏览的按钮
我们再来看一个PHP处理页面 uploadphp
代码如下 复制代码
<?php
if($_FILES[myfile][name] != ) {
if($_FILES[myfile][error] > ) {
echo "错误状态" $_FILES[myfile][error];
} else {
move_uploaded_file($_FILES[myfile][tmp_name] "uploads/" $FILES[myfile][name]);
echo "<script>alert(上传成功!);</script>";
}
} else{
echo "<script>alert(请上传文件!);</script>";
}
?>
上面超级简单我们现在来升级一下
uploadphp
代码如下 复制代码
<!DOCTYPE HTML PUBLIC "//WC//DTD HTML Transitional//EN">
<html>
<head>
<title>ddd</title>
<meta httpequiv="contenttype" content="text/html; charset=UTF">
</head>
<body>
<!文件上传要注意:要有enctypmethod="post">
<form enctype="multipart/formdata" action="uploadProcessphp" method="post" >
<table>
<tr><td>请填写用户名</td><td><input type="text" name="username"></td></tr>
<tr><td>请简单介绍文件</td><td><textarea rows="" cols="" name="fileintro" style="width:px;"></textarea></td></tr>
<tr><td>请上传你的文件</td><td><input type="file" name="myfile"></td></tr>
<tr><td colspan=""><input type="submit" value="上传"><td></tr>
</table>
</form>
</body>
</html>
uploadProcessphp
代码如下 复制代码
<?php
//接收
$username=$_POST[username];
$fileintro=$_POST[fileintro];
//echo $username$fileintro;
//获取文件信息
/* echo "<pre>";
print_r($_FILES);
echo "</pre>";
*/
//获取文件的大小
$file_size=$_FILES[myfile][size];
if($file_size>**){
echo "<script type=text/javascript>windowalert(文件不能大于M)</script>";
exit();
}
//获取文件类型
$file_type=$_FILES[myfile][type];
if($file_type!="image/jpeg" && $file_type!="image/pjpeg"){
echo "文件类型只能是 jpg 格式";
exit();
}
//判断上传是否OK
if(is_uploaded_file($_FILES[myfile][tmp_name])){
//得到上传的文件 转存到你希望的目录
$upload_file=$_FILES[myfile][tmp_name];
//防止图片覆盖问题为每个用户建立一个文件夹
$user_path=$_SERVER[DOCUMENT_ROOT]"/file/up/"$username;
if(!file_exists($user_path)){
mkdir ($user_path);
}
//$move_to_file=$user_path"/"$_FILES[myfile][name];
//防止用户上传用户名相同的问题
$file_true_name=$_FILES[myfile][name];
$move_to_file=$user_path"/"time()rand()substr($file_true_namestrripos($file_true_name""));
//echo $upload_file$move_to_file;
//中文要转码
if(move_uploaded_file($upload_fileiconv("utf""gb""$move_to_file"))){
echo $_FILES[myfile][name]"上传成功";
}else{
echo "上传失败";
}
}else{
echo "上传失败";
}
?>
注意:
我举个例子大家就知道比如一个图片文件 picjpg我们用 strrchr处理strrchr(picjpg)它将返回jpg明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符配合 substr() 我们就可以取到jpg这样我们就得到了文件的后缀名来判断上传文件是否符合指定格式本程序把指定的格式放在一个数组中实际使用时可根据需要添加
接下来看产生随机数文件名部分 我们看到mt_srand()这个函数手册上叫他“播下一个更好的随机数发生器种子”其实就是初始化一个随机数的函数参数是(double)microtime() * 这里如果不这是参数就会自动设置个随机数当然这不符合我们的需要如此一来随机数就具备一定的长度保证了上传文件不重名