您的位置:首页 > 其它

文件上传操作

2018-10-18 13:51 381 查看

代码如下:

<?php

header("Content-type: text/html; charset=utf8");

/**

 * 函数名:upload

 * 描述:文件上传

 * @param array $file 上传文件的信息

 * @param array $allow 文件上传的类型

 * @param string $path 文件上传的路径

 * @param int $maxsize = 2*1024*1024 允许上传的文件的大小

 * @return false|$newname 如果上传失败就返回false,成功则返回文件的新名字

 */

function upload($file,$allow,$path,$maxsize=2097152){

 $res = array('code'=>1,'msg' => '上传成功!','data'=>[]);

 // 判断系统错误

 switch ($file['error']) {

 case 1:

 $res['code'] = 0;

 $res['msg'] = '上传错误,超出了文件限制的大小!';

 return $res;

 case 2:

 $res['code'] = 0;

 $res['msg'] = '上传错误,超出了表单允许的大小!';

 return $res;

 case 3:

 $res['code'] = 0;

 $res['msg'] = '上传错误,文件上传不完整!';

 return $res;

 case 4:

 $res['code'] = 0;

 $res['msg'] = '请先选择要上传的文件!';

 return $res;

 case 6:

 case 7:

 $res['code'] = 0;

 $res['msg'] = '对不起,服务器繁忙,请稍后再试!';

 return $res;

 }


 // 判断文件大小

 if ($file['size'] > $maxsize) {

 $res['code'] = 0;

$res['msg'] = '超出文件大小,允许的最大值为:'. $maxsize . '字节';

return $res;

 }

 

// 判断文件类型 image/png

 if (!in_array($file['type'], $allow)) {

 // 文件类型非法

 $res['code'] = 0;

$res['msg'] = '上传的文件类型不正确,允许的类型有:' . implode(',', $allow);

return $res;

 }

 

 // 得到文件的新名字

 $newname = randName($file['name']);

 // 移动临时文件到指定路径

 $target = $path . '/' . $newname;

 if (move_uploaded_file($file['tmp_name'], $target)) {

 $res['data'] = $newname;

 return $res;

 }else {

 $res['code'] = 0;

$res['msg'] = '发生未知错误,上传失败!';

return $res;

 }

}

 

 

/**

 * 函数名:randName

 * 描述:定义一个产生随机名字的函数

 * @param string $filename 文件的旧名字 

 * @param string $newname 文件的新名字

 */

function randName($filename) {

 // 生成文件名的时间部分 

 $newname = date('YmdHis');

 // 加上随机的六位数

 $str = '0456789';

 // 得到六位随机数

 for ($i=0; $i < 6; $i++) {

 // 将每次得到的随机数加到新名字后

 $index = mt_rand(0,strlen($str));

 $index = $index <= 0 ? 0 : $index -1;

 $newname .= $str[$index];

}

 // 加上后缀名

 $newname .= strrchr($filename, '.');

 return $newname; 

}


// 获取上传文件

$file = $_FILES["uploadfile"];

// 允许上传的类型

$allowArr = array('image/png','image/jpeg');

// 上传到当前目前下

$path = '.';

// 调用上传方法

$uploadRes = upload($file,$allowArr,$path);

var_dump($uploadRes);

运行成功结果如下:

运行失败结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件 上传 操作