PHP 基础
这里教大家一个PHP文件上传的方法,并返回网络文件的位置
操作环境
直接上源代码,后面写写使用的方法
/**
* 上传文件的方法
* 第一个参数 要过滤的数据类型 必须是数组
* 第二个参数 前端上传时用的 name 名称 例:<input type='file' name='file'>为例
* 第三个参数 文件上传后要存放的位置 以调用该方法的文件为基础
* 第四个参数 设置一个文件名称 $_FILES[$postname]["name"] 这个名称就是上传文件的名称,建议修改
* 第五个参数 设置要上传文件的大小 默认 2M
* 第六个参数 上传了文件后需要一个文件在网络上的地址 最后 / 不能省略
*/
function uploadFile($arrayinfo){
$status = 0;
$msg = "";
$data = null;
// 六个参数 默认值
$init = array(
'filter'=>array(), // 过滤类型,默认不过滤
'postname'=>'file', // 前台上传的name名称
'filedir'=>'./uploads/', // 要上传的文件夹
'filename'=>$_FILES['file']["name"], // 要上传的文件名
'filesize'=>1024*1024*2, // 上传文件的大小上限
'url'=>'https://www.xialijun.top/', // 默认网络图片地址
);
// 后面的覆盖前面的 修改一下参数
$init = array_merge($init,$arrayinfo);
// 开始过滤
$filter = in_array($_FILES[$init['postname']]["type"],$init['filter']);
if($filter && ($_FILES[$init['postname']]["size"] < $init['filesize']) ){
if($_FILES[$init['postname']]["error"]>0){
switch ($_FILES[$init['postname']]['error']) {
case 1:
$str = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
break;
case 2:
$str = '上传的文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case 3:
$str = '文件只有部分被上传';
break;
case 4:
$str = '没有文件被上传';
break;
case 6:
$str = '找不到临时文件夹';
break;
case 7:
$str = '文件写入失败';
break;
}
$msg = $str;
}
else{
// 返回文件的后缀名
$suffix = explode('.', $_FILES[$init['postname']]["name"]);
$suffix = $suffix[count($suffix)-1];
// 判断文件是否存在
if(file_exists($init['filedir'].$_FILES[$init['postname']]["name"])){
echo $_FILES[$init['postname']]["name"]." 上传文件已存在 ";
}
else{
// 上传的文件被移动到 指定位置
@move_uploaded_file($_FILES[$init['postname']]["tmp_name"],$init['filedir'].$init['filename'].".".$suffix);
// 设置状态证明文件上传成功
$status = 1;
// 上传成功的提示
$msg = "上传成功";
// 返回文件的网络地址
$data = $init['url'].$init['filename'].".".$suffix;
}
}
}
else{
$str =$_FILES[$init['postname']]["type"]." 上传文件有问题";
if(false){
$str = $_FILES[$init['postname']]["name"]." 不符合要求<br>";
$str .= "可能的情况是: <br>";
$str .= "1.文件大于5M;<br>";
$str .= "2.文件的类型不符合要求 当前的类型是: ".$_FILES[$init['postname']]["type"].";<br>";
$str .= "支持的类型有:<br>";
foreach ($init['filter'] as $value) {
$str .= $value."<br>";
}
}
$msg = $str;
}
return array('status'=>$status,'msg'=>$msg,'data'=>$data);
}
使用方法
/**
* 这里就是把上传的参数设置好后传入 上面的方法中
*/
$init = array(
'filter'=>array('image/jpeg'), // 过滤类型,默认不过滤
'postname'=>'p', // 前台上传的name名称
'filedir'=>'../uploads/', // 要上传的文件夹
'filename'=>time().'_'.rand(10000,99999), // 要上传的文件名
'url'=>'http://127.0.0.1/uploads/', // 默认网络图片地址
);
// 开始上传文件
$res = uploadFile($init);
// 上传完成后,查看上传的是否正确
var_dump($res);
感谢查看,多关注,多评论,谢谢!!