PHP实现文件上传

  • 上传文件的必备三个条件:

1、上传到后台的文件

2、method = "post";(不可以为get方法)

3、enctype = "multipart/form-data";(注意哦,是data,不是date)

三者缺一不可

后台PHP的$_FILES变量用于接收文件上传的信息

输出一个二维数组,一维数组的myFile就是HTML中的type为file的input标签的name属性值;

说明文件上传到uploads文件夹成功了


 

  • 服务端配置上传文件信息

http://php.int

a、可以修改临时文件保存的目录

b、post_max_size = 8M,(默认值为8M)POST方式发送数据的最大值;大于8M的发送不成功。注意:小于8M的也不一定成功,因为还受到upload_max_filesize的影响

c、超过post_max_size和upload_max_filesize都不成功

d、上传文件很大的配置:========关键字Resource==========

  • 错误信息说明

  • 客户端限制上传文件类型和文件大小

1、accept=""属性进行文件类型限制;

如:accept = "image/png,image/jpg,image/gif"类型要以逗号隔开;

注意======

客户端的限制,用户可以在控制台修改,所以一般建议在服务器上进行限制,这样才不影响正常的运行。

2、<input type="hidden" name="MAX_FILE_SIZE" value="values">进行文件大小的限制

如:<input type="hidden" name="MAX_FILE_SIZE" value="17760">

缺点:客户端做的限制对于会程序的人来说没有用。


 

  • 服务器端的限制

1、限制文件上传类型

1)、获取扩展名

通过截取点(.)后面的字符串,其中:

$fileInfo = $_FILES['myFile'];//myFile为type为file的input标签的name属性值;

a、$ext=strtolower(end(explode('.',$fileInfo['name'])));

分析:(1).strtolower(string) 函数把字符串转换为小写。返回转换为小写的字符串。'

(2).end(array) 函数将内部指针指向数组中的最后一个元素,并输出。如果成功则返回数组中最后一个元素的值,如果数组为空则返回 FALSE。

(3).explode(separator,string,limit) 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。separator规定在哪里分割字符串。"separator" 参数不能是一个空字符串。string要分割的字符串。limit(可选)规定所返回的数组元素的数目。

b、$ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);

分析:pathinfo(path,options) 函数以数组或字符串的形式返回关于文件路径的信息。

path:必需。规定要检查的路径。

options:可选。规定要返回的数组元素。默认是 all。

PATHINFO_DIRNAME - 只返回 dirname

PATHINFO_BASENAME - 只返回 basename

PATHINFO_EXTENSION - 只返回 extension

猜你喜欢

转载自blog.csdn.net/sinat_30603081/article/details/131082189