PHP操作文件上传

目录

一.文件上传介绍 

二.文件上传的相关配置问题

三.文件上传步骤 

1.判断是否有错误码

2. 自定义判断是否超出文件大小范围

3、判断后缀名和mime类型是否符合 

4、生成文件名

5、判断是否是上传文件 

6、移动临时文件到指定位置

 四:表单注意事项


 

一.文件上传介绍 

在我们日常使用中经常会遇到很多种这样的情况:

而这些上传文件的操作用php也可以实现(很多就是用的php),而且php的文件上传操作时每个程序员都要会的,通过本章学习,你将看到文件上传的本质

二.文件上传的相关配置问题

在正式讲解文件上传之前,第一个事情是要观察php.ini文件,这个文件就是文件上传的配置文件,里面有很多的配置项,这里给出一个php中文网的例子,我们先简单了解几个

此外还有一个需要注意的就是脚本执行时间这个参数(即设定脚本的最大执行时间)

// max_execution_time,这什参数的单位为秒。

以上参数基本都有默认值,如果默认值不能满足需要时再去修改即可

三.文件上传步骤 

 为了方便大家的理解,这里我将php的文件上传分成了六个步骤

1.判断是否有错误码

注意:错误码并不会有5

2. 自定义判断是否超出文件大小范围

在编写开发上传功能的时候除了php.ini中规定的上传的最大值外,我们还自定义判断是否超出文件大小范围用于限制实际业务中我们想要规定的上传的文件大小 

3、判断后缀名和mime类型是否符合 

有时候为了防止用户上传上来的图片带有病毒或者其他文件,就可以对文件的后缀或者mine类型进行判断,如果不符合要求就不让其进行上传,这也是白名单的一种做法 

每种后缀都有对应的mine类型,这个大家可以自行去查,这里就不做太多讲解了

4、生成文件名

 文件成功上传后需要我们进行保存,但很多时候都不会保存用户上传的原名,这里我们就可以采用date()、mt_rand()或者unique()生成随机的文件名

5、判断是否是上传文件 

文件上传成功时,系统会将上传的临时文件上传到系统的临时目录中。产生一个临时文件

同时会产生临时文件名。我们需要做的事情是将临时文件移动到系统的指定目录中。

而移动前不能瞎移动,或者移动错了都是不科学的。移动前我们需要使用相关函数判断上传的文件是不是临时文件。

is_uploaded_file()传入一个参数($_FILES中的缓存文件名),判断传入的名称是不是上传文件。

6、移动临时文件到指定位置

临时文件是真实的临时文件,我们需要将其移动到我们的网站目录下面了。

让我们网站目录的数据,其他人可以访问到。

 四:表单注意事项

 文件上传必须需要表单,form表单也为文件内容准备了一个专用的类。下面给出一个文件上传的前端html页面的简单例子


<html><head><meta charset="utf-8" /><title>单文件上传</title></head><body><form action="file.php" method="post" enctype="multipart/form-data"><input type="file" name="file"><input type="submit" value="上传"></form></body></html>

这个html页面有两个需要注意的点,

  • form 表单中的参数method 必须为post。若为get是无法进行文件上传的

  • enctype须为multipart/form-data

上面的表单我们可以看出提交地址是file.php ,这里的file.php其实主要做的就是对上传的文件进行审核,存放等操作,代码如下

<?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //获取数组里面的值 $name=$upfile["name"];//上传文件的文件名 $type=$upfile["type"];//上传文件的类型 $size=$upfile["size"];//上传文件的大小 $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 //判断是否为图片 switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } if($okType){ /** * 0:文件上传成功<br/> * 1:超过了文件大小,在php.ini文件中设置<br/> * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> * 3:文件只有部分被上传<br/> * 4:没有文件被上传<br/> * 5:上传文件大小为0 */ $error=$upfile["error"];//上传后系统返回的值 echo "================<br/>"; echo "上传文件名称是:".$name."<br/>"; echo "上传文件类型是:".$type."<br/>"; echo "上传文件大小是:".$size."<br/>"; echo "上传后系统返回的值是:".$error."<br/>"; echo "上传文件的临时存放路径是:".$tmp_name."<br/>"; echo "开始移动上传文件<br/>"; //把上传的临时文件移动到up目录下面 move_uploaded_file($tmp_name,'up/'.$name); $destination="up/".$name; echo "================<br/>"; echo "上传信息:<br/>"; if($error==0){ echo "文件上传成功啦!"; echo "<br>图片预览:<br>"; echo "<img src=".$destination.">"; //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; }elseif ($error==1){ echo "超过了文件大小,在php.ini文件中设置"; }elseif ($error==2){ echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; }elseif ($error==3){ echo "文件只有部分被上传"; }elseif ($error==4){ echo "没有文件被上传"; }else{ echo "上传文件大小为0"; } }else{ echo "请上传jpg,gif,png等格式的图片!"; } } ?>

本文链接:https://my.lmcjl.com/post/9751.html

展开阅读全文

4 评论

留下您的评论.