【PHP】PHP上传文件,上传图片

来源:互联网 发布:通达信软件官网 编辑:程序博客网 时间:2024/05/22 14:24

目的:上传一个文件到自定义的文件夹upload中。

步骤:

1.在html文件中引入input文件标签。

2.在form中指定enctype = "multipart/form-data属性,提交方式必须是post。

文件提交后不会立即存到该文件夹中,会先存储到一个临时文件夹中

3.在upload.php中创建upload文件夹后,将临时文件复制过去。上传即完成。


upload.html

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body><!--1.复选框的name后面必须加[],提交到后台才能存到数组中 -->  <div id="box"><form action="upload.php" method="post" enctype = "multipart/form-data"> <div><h2>文件类型</h2><!--隐藏文件--><input type="hidden" name="MAX_FILE_SIZE" value="10240000" id=""/><input type="file" name="myFile" id="myFile" value=""/></div> <input type="submit" value="确认提交"/></form></div></body></html>

后台通过$_FILES获取文件信息,$_FILES数组中的“myFile”数组中保存了所提交文件的信息。

(myFile是input标签的name)


upload.php

<?php //1.处理文件信息    $fileArr = $_FILES["myFile"];//input标签中的name    //将文件信息保存在变量中    $name = $fileArr['name'];//文件名    $type = $fileArr["type"];//文件类型    $tmp_name = $fileArr["tmp_name"];//文件临时存储位置的文件名    $error = $fileArr["error"];//文件的错误信息    $size = $fileArr["size"];//文件的大小    //2.新建存储文件的目录    $filePath = "uploads";     function createDir($filePath){    if(!file_exists($filePath)){ $res = mkdir($filePath); if($res){ echo "创建成功"; }} } createDir($filePath);//因为要上传的文件为图片,所以此时设置允许的后缀名如下,如果其他文件则修改为txt等后缀 $allowExt=["image/png","image/jpeg","image/gif"];//3.判断文件是否上传成功    if($error===UPLOAD_ERR_OK){//UPLOAD_ERR_OK==0,上传成功         if(!in_array($type,$allowExt)){//如果类型不在数组中             exit("非法类型文件");         }         //判断后缀正确但不是图片的文件         if(!getimagesize($tmp_name)){             exit("不是真正的一张图片");         }                    $ext = pathinfo($name)["extension"];//获取文件后缀          $uniname = time().".".$ext;//生成一个唯一的文件名          $destination = $filePath."/".$uniname; //4.move_uploaded_file将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false         $res = move_uploaded_file($tmp_name,$destination);                  if($res){//上传成功              //把图片服务器连接传出去:拼接出一个图片的src              $server = $_SERVER["HTTP_ORIGIN"];              $rootDir = pathinfo($_SERVER["REQUEST_URI"])["dirname"];               $imgPath = $server.$rootDir."/".$destination; //图片的src             echo "<img src='{$imgPath}'>";//输出图片         }         else{             echo "<hr>上传失败";         }    }    else{//上传失败,给出错误提示         switch ($error) {             case UPLOAD_ERR_INI_SIZE://1                 die("上传的文件超过了PHP配置中upload_max_file大小的最大值");//die();结束程序                 break;             case UPLOAD_ERR_FORM_SIZE://2                 die("上传的文件超过了HTML表单中隐藏域MAX_FILE_SIZE中value选项指定的值");                 break;             case UPLOAD_ERR_NO_TMP_DIR://6                 die("没有找不到临时文件夹");                 break;             case UPLOAD_ERR_CANT_WRITE://7                 die("文件写入失败");                 break;             case UPLOAD_ERR_EXTENSION://8                  die("php文件上传扩展没有打开");                 break;             case UPLOAD_ERR_PARTIAL://3                  die("文件只有部分被上传");                 break;             default:                 break;         }    }?>