PHP 如何上传文件

在做网站或小程序时,经常需要让用户上传头像、文档或图片,比如注册账号时传头像,简历系统里传文件,这时候用PHP就能快速实现文件上传功能。很多新手觉得代码类功能很复杂,其实只要跟着步骤来,结合生活里的例子,就能轻松理解。

先搞懂:PHP上传文件的核心是什么

简单说,PHP上传文件就像你去快递站寄包裹:你得先把包裹(要传的文件)打包好,填好收件人信息(上传的目标地址),快递员(PHP)才能把包裹送对地方。这里有几个关键的“寄件规则”,只要遵守了,就不会出问题。

PHP 如何上传文件

第一个规则:得让网页支持“文件打包”。普通的文字输入框只能传文字,要传文件,得用专门的表单属性。比如你用微信发文件,得点“+”选“文件”,不能直接打字传。网页里对应的就是<form>标签要加enctype="multipart/form-data",这行代码就相当于告诉浏览器“我要传文件,别只传文字”。

第二个规则:得给文件找个“安全的家”。不能让随便一个文件存到网站的根目录,不然恶意文件会把网站搞坏,就像你不能把快递直接扔到小区门口,得放专门的快递柜。PHP里有个move_uploaded_file()函数,就相当于快递员把包裹放到指定的安全柜子里,而不是随便扔。

举个例子:写一个简单的PHP上传脚本

我们来做一个“上传头像”的小功能,和你在社交软件上换头像的流程一样,一共三步,每一步都很简单:

第一步:做一个带文件选择框的网页。这个网页就是你打开的“换头像”页面,代码里的<input type="file">就是让用户点这个框,从电脑里选头像,就像你点微信里的“选文件”按钮。

第二步:接收选好的头像文件。用户点“上传”后,PHP会拿到这个文件的临时信息,就像快递员拿到你填好地址的包裹,先存到快递公司的临时仓库里。这里要注意,得检查文件是不是真的是用户传的,不是恶意程序伪装的,就像快递员要检查包裹是不是你要寄的,不是别人塞的垃圾。

第三步:把头像存到安全的文件夹里。用move_uploaded_file()函数,把临时仓库里的头像移到你提前建好的“avatar”文件夹里,这样头像就永久存在网站里了。

要避开这些常见的“小坑”

很多新手第一次写上传功能会出错,大多是踩了这几个小坑:

第一个坑:忘了加enctype属性。如果没加,表单就只会传文字,文件会传不上去,就像你用普通信封寄包裹,快递员根本不会帮你运。

第二个坑:文件夹没有写入权限。就像小区快递柜满了,或者你没权限开柜,PHP就存不了文件,这时候要让网站的管理者给“avatar”文件夹开写入权限,就像给你快递柜的开锁权限。

第三个坑:没限制文件类型和大小。如果用户传了一个10G的视频,网站会直接卡死;如果传了个恶意的.exe文件,会把网站搞坏。就像你寄包裹不能寄超大的违禁品,要限制只能传图片,大小不超过2M,这样才安全。

现在,你可以用这些步骤做一个简单的上传功能,不管是传头像还是传简历,只要换一下文件夹和文件类型的设置就可以。不用怕复杂的术语,记住“打包-接收-存放”这三个核心步骤,再避开小坑,就能轻松实现文件上传了。

上一篇 JavaScript 数组去重有哪些方法