【简单写法】单文件上传
作者: thtomatic 分类: php笔记 评论: [ 0 ] 条 浏览: [ 1125 ] 次
html的代码如下:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<form action="upload.php" method="post" enctype="multipart/form-data" >
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/><!--“君子的约定”最大的文件尺寸(1000000约等于1MB)-->
pic:<input type="file" name="pic" value=""/><br/>
<input type="submit" value="upload"/><br/>
</form>
PHP代码如下:
<?php
header("Comtent-Type:text/hml;charset=UTF-8");
/*echo "<pre>";
print_r($_FILES);
echo "</pre>";
输出为:
Array
(
[pic] => Array
(
[name] => 201661202728521.png
[type] => image/png
[tmp_name] => C:\Windows\phpAC47.tmp
[error] => 0
[size] => 72240
)
)
下方的第一步、第二步、第三步、第四步判断都可以省略只是不安全而已
*/
//第一步:判断错误
if($_FILES['pic']['error']>0){
switch ($_FILES['pic']['error']) {
case 1:
echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br/>";
break;
case 2:
echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值<br/>";
break;
case 3:
echo "文件只有部分被上传<br/>";
break;
case 4:
echo "没有文件被上传<br/>";
break;
case 6:
echo "找不到临时文件夹<br/>";
break;
case 7:
echo "文件写入失败<br/>";
break;
default:
echo "未知错误<br/>";
break;
}
exit;
}
//第二步:判断类型
//获取文件名“.”后面的字符
$arr=explode(".",basename($_FILES['pic']['name']));
//获取最后一个“.”后面的字符即使文件后缀
$hz=array_pop($arr);
//设置支持的文件后缀
$allowtype=array("gif","png","jpg","jpeg");
//判断后缀是否在规定范围内
if(!in_array($hz,$allowtype)){
echo "上传的类型不合法<br/>";
exit;
}
//第三步:判断大小
//设置传输最大值为1000000kb;
$maxsize=1000000;
//判断是否超出了规定的大小
if($_FILES['pic']['size']>$maxsize){
echo "上传的文件超过了".$maxsize;
exit;
}
//第四步:上传的文件名一定要设置
//获得文件临时存储的名字
$tmpfile=$_FILES['pic']['tmp_name'];
//规定随机的名字(年月日时分秒+4位随机数)
$srcname="./uploads/".date("YmdHis").rand(1000,9999).".".$hz;
//将临时目录下的上传的文件,复制到我指定目录(./uploads/)下,指定的名字就可以完成上传
if(move_uploaded_file($tmpfile, $srcname)){
echo "上传成功";
}else{
echo "上传失败";
}
基本上单一的文件上传完成
PHP文件中用到的函数:
explode — 使用一个字符串分割另一个字符串
array explode ( string $separator , string $string [, int $limit ] )
basename — 返回路径中的文件名部分
string basename ( string $path [, string $suffix ] )
array_pop — 将数组最后一个单元弹出(出栈)
in_array — 检查数组中是否存在某个值
bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
date — 格式化一个本地时间/日期
string date ( string $format [, int $timestamp ] )
move_uploaded_file — 将上传的文件移动到新位置
bool move_uploaded_file ( string $filename , string $destination )
版权所有:《thtomatic》 => 《【简单写法】单文件上传》
本文地址:https://ask.mykeji.net/phpnotes/Simple_notation_single_file_upload.html
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。
发表评论: