PHP操作文件上传

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程,学习方法,总结的经验等等,希望能帮助到大家
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:不是所有的喜欢都会有结果

目录

一.文件上传介绍 

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

三.文件上传步骤 

1.判断是否有错误码

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

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

4、生成文件名

5、判断是否是上传文件 

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

 四:表单注意事项


 

一.文件上传介绍 

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

  • QQ空间里面上传图片呀

  • 微信朋友圈上传图片

  • 发邮件里面上传邮件资料附件

  • 认证的时候要求上传照片或身份证

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

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

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

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

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

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

三.文件上传步骤 

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

1.判断是否有错误码

注意:错误码并不会有5

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

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

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

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

MIME(Multipurpose Internet Mail Extensions)是多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 

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

4、生成文件名

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

5、判断是否是上传文件 

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

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

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

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

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

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

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

我们使用:move_uploaded_file()。

这个函数是将上传文件移动到指定位置,并命名。

传入两个参数:

  • 第一个参数是指定移动的上传文件;

  • 第二个参数是指定的文件夹和名称拼接的字符串。

 四:表单注意事项

 文件上传必须需要表单,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等格式的图片!"; 

} 

} 

?>

这就是今天的全部内容了,希望大家下去可以多自己尝试一下,php中的文件上传是非常常见的,加油哇。

  • 90
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
文件上传是网站开发中常用的功能之一,PHP文件上传类可以帮助我们实现文件上传功能。当用户需要上传文件时,可以使用PHP文件上传类来处理文件上传的逻辑。PHP文件上传类可以实现对上传文件的各种验证,例如文件类型、大小、保存路径等。通过使用PHP文件上传类,可以让文件上传变得更加安全、简单和高效。 PHP文件上传类可以通过封装上传文件的函数来实现文件的上传和下载。上传文件的功能通过对文件的验证和处理,将文件保存到服务器指定的位置。而下载文件的功能通过设置文件的下载头信息,实现对指定文件的下载操作PHP文件上传类还可以处理文件重名、文件大小限制、文件类型限制等问题,保证文件上传过程中的安全性和完整性。 在使用PHP文件上传类的过程中,需要注意对上传文件的安全性进行严格的检查,避免出现恶意文件上传或者文件被非法下载的情况。同时,需要确保服务器环境对文件上传和下载的操作进行了正确的配置,以确保文件上传和下载功能的正常运行。 总的来说,PHP文件上传类可以极大地方便我们在网站开发中对文件的上传和下载操作,帮助我们完成文件处理的各种功能。无论是图片、文档还是音视频文件,PHP文件上传类都可以帮助我们完成文件上传和下载功能,为网站的用户提供更好的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hacking庆尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值