PHP上传文件功代码练习
前端:
<html>
<head><title>upload file</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action="uploadtest.php" method="post" enctype="multipart/form-data">
<!-- name必须是MAX_FILE_SIZE,value是字节数 -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152"/>
<!-- accept是文件的MIME类型 -->
<input type="file" name="fileName" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" />
<input type="submit" value="上传文件"/>
</form>
</body>
</html>
上传文件的函数:
<?php
header(‘content-type:text/html;charset=utf-8‘);
function uploadFile($file,$uploadpath=‘upload‘,$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘],$max=2097152,$flag=false){
//$file=@$_FILES[‘fileName‘];
//var_dump($file);
//$max=2097152; //加入到参数中,默认2M
//由于客户端限制靠不住,所以也要在服务端进行限制。
//限制文件的大小;
if ($file[‘size‘]>$max) {
exit(‘文件过大,不能上传。‘);
# code...
}
if ($file[‘error‘]!==0) {
switch($file[‘error‘]){
case 1:
$errmsg= "上传文件超过了php.ini中upload_max_filesize选项限制的值。";
break;
case 2:
$errmsg= "上传文件的大小超过了HTML表单中max_file_size选项指定的值。";
# code...
break;
case 3:
$errmsg= "文件只有部分被上传";
# code...
break;
case 4:
$errmsg= "没有文件被上传";
# code...
break;
case 6:
$errmsg= "找不到临时文件夹。";
# code...
break;
case 7:
case 8:
$errmsg= "系统出错";
# code...
break;
}
exit($errmsg);
# code...
}else{
//判断是否是通过HTTPPost上传
if (!is_uploaded_file($file[‘tmp_name‘])) {
exit(‘不是通过HTTP Post上传‘);
# code...
}
//判断文件格式
//也可以用 pathinfo($file[‘name‘],PATHINFO_EXTENSION);
$ext=@strtolower(end(explode(‘.‘, $file[‘name‘])));
//$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘];//加入到数组中,定制文件类型
if (!in_array($ext, $extarray)) {
exit(‘文件格式错误‘);
# code...
}
//判断是否是真正的图片
if($flag===true){
if (@!getimagesize($file[‘tmp_name‘])) {
exit(‘不是真正的图片‘);
# code...
}
}
//指定上传目录
//$uploadpath=‘upload‘;//加入到参数中 默认值为‘upload‘
//判断文件是否存在
if (!file_exists($uploadpath)) {
mkdir($uploadpath,0777,true);
chmod($uploadpath, 0777);
# code...
}
//确保每个上传的文件有唯一的名字
$newname=md5(uniqid(microtime(true),true)).‘.‘.$ext;
$pathname=$uploadpath.‘/‘.$newname;
if (move_uploaded_file($file[‘tmp_name‘], $pathname)) {
// exit(‘上传成功‘);
// # code...
return $pathname;
}
}
}
?>
使用函数:
<?php include(‘upload.func.php‘); $file=$_FILES[‘fileName‘]; $new=uploadFile($file,‘lijian‘,$extarray=[‘txt‘,‘html‘]); echo $new;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。