php原生文件上传

来源:互联网 发布:系列电影 知乎 编辑:程序博客网 时间:2024/05/22 03:06
<?php


function upFile() {

// 首先判断是否有文件上传
if(empty($_FILES)) {
$status = 0;
$info = '没有文件上传';
}

if($_FILES['myFile']['error'] == 0) {
// 文件上传成功
$tmp = pathinfo($_FILES['myFile']['name']);
$new_fname = $tmp['filename'].'_'.rand(1000000,9999999).'.'.$tmp['extension'];
// 移动文件到指定目录
if(!move_uploaded_file($_FILES['myFile']['tmp_name'],'./'.$new_fname)) {
$status = 0;
$info = '上传失败';
}else {
$status = 1;
$info = '上传成功';
}
}else {
// 文件上传失败
$info = '文件上传失败';
switch($_FILES['myFile']['error']) {
case 1:
  $info = '上传文件超过配置文件中upload_max_filesize配置参数';
  break;
case 2:
  $info = '上传文件超过了表单MAx_FILE_SIZE选项指定值';
  break;
case 3:
  $info = '文件只有部分被上传';
  break;
case 4:
  $info = '没有文件被上传';
  break;
case 5:
  $info = '上传文件大小为0';
  break;
}
$status = 0;
}

return array('status' => $status,'info' => $info);

}





第二种:

//1.设置上传文件的类型
$uptypes = array('image/jpg','image/png','image/jpeg','image/gif');
//2.设置上传文件的大小
$max_file_size = 2000000;
//3.设置文件上传的目录
$upload_file_path = "upimgs/";




// 判断表单的提交方式
if(strtolower($_SERVER['REQUEST_MWTHOD']) == 'post') {
// 判断是否有文件上传
if(!$_FILES['upfile']['tmp_name']) {
echo "没有文件上传";
exit;
}

$file = $_FILES['upfile'];

// 判断文件上传的类型
if(!in_array($file['type'],$uptypes)) {
echo "文件类型不正确";
exit;
}

// 判断文件上传的大小
if($max_file_size < $file['size']) {
echo "文件太大,不符合要求";
exit;
}

// 创建文件上传目录
if(!file_exists($upload_file_path)) {
mkdir($upload_file_path);
}

// 执行上传操作
$filename = $file['tmp_name'];

$file_path = pathinfo($file['name']);
$file_new_path = $upload_file_path.time().'.'.$file_path['extension'];

if(!move_uploaded_file($filename,$file_new_path)) {
echo "上传文件失败";
exit;
}else {
// 上传文件成功
echo "上传文件成功";
}
}



在上传文件的时候有几个点需要注意:

1.表单提交的方式必须是post

2.必须要把表单enctype属性设置为multipart/form-data

3.为了保证上传成功,需要验证上传文件的大小是否超标,文件类型是否符合,上传文件的目录是否存在

4.为了防止上传文件重名,可以在上传文件的时候获取文件的后缀名,然后使用时间戳加文件后缀名的方式给文件命名

原创粉丝点击