利用PHP怎么对多个文件进行上传

  介绍

这篇文章给大家介绍利用PHP怎么对多个文件进行上传,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

上传多文件

1。在对多文件信息进行操作前,需要构建文件信息,通过buildInfo函数将三维数组转换成便于文件操作的二维数组。

function  buildInfo () {   小姐:美元才能=,0;   foreach 才能;(_FILES 美元;as  $ v) {   ,,,//判断是否是单文件   ,,,如果(is_string (v(& # 39;名字# 39;])){   ,,,,,文件[我]美元美元,=,v美元;   ,,,,,我+ +美元;   还有,,,}{   ,,,,,//多文件   ,,,,,foreach  (v美元[& # 39;名字# 39;],as  key 美元;=祝辞,美元值){   ,,,,,,,美元文件[$ i][& # 39;名字# 39;],=,美元价值;   ,,,,,,,美元文件[$ i][& # 39;大小# 39;],=,v美元[& # 39;大小# 39;][$ key];   ,,,,,,,美元文件[$ i] [& # 39; tmp_name& # 39;],=, v美元[& # 39;tmp_name& # 39;] [$ key];   ,,,,,,,美元文件[$ i][& # 39;类型# 39;],=,v美元[& # 39;类型# 39;][$ key];   ,,,,,,,美元文件[$ i][& # 39;错误# 39;],=,v美元[& # 39;错误# 39;][$ key];   ,,,,,,,我+ +美元;   ,,,,,}   ,,,}   ,,}   return 才能;$文件;   }

单文件和多文件的判断在于文件数组的类型,单文件(二维数组),多文件(三维数组).

2。文件上传函数及参数

代码如下:


函数还是($ path=皍ploads",,$ allowExt=阵列(“jpg",“gif",“png",“wbmp"),最大尺寸=1048576美元,美元imgFlag=true)

路径,保存目录.allowExt,允许扩展名数组.maxSize最大上传文件大小.imgFlag,图片文件标识符。

3。判断保存文件的目录是否存在

如果(! file_exists(路径)美元){   ,,,mkdir(0777美元的路径,,,,真的);   以前,,}

4。传入构建好的文件信息,保存到文件

小姐:美元=,0;   files 美元;=,buildInfo ();

5。判断文件的错误类型

foreach  (files 美元;as  $文件){   ,,,if($文件[& # 39;错误# 39;],==,UPLOAD_ERR_OK) {   其他}{   ,,,switch ($文件[& # 39;错误# 39;)){   ,,,,,case  1:   ,,,,,,,mes 美元;=,“超过配置文件上传文件大小“;   ,,,,,,,休息;   ,,,,,case  2:   ,,,,,,,mes 美元;=,“超过了表单设置“;   ,,,,,,,休息;   ,,,,,case  3:   ,,,,,,,mes 美元;=,“文件部分被上传“;   ,,,,,,,休息;   ,,,,,case  4:   ,,,,,,,mes 美元;=,“没有文件上传“;   ,,,,,,,休息;   ,,,,,case  6:   ,,,,,,,mes 美元;=,“没找到临时目录“;   ,,,,,,,休息;   ,,,,,case  7:   ,,,,,,,mes 美元;=,“文件不可写“;   ,,,,,,,休息;   ,,,,,case  8:   ,,,,,,,mes 美元;=,“由于PHP的扩展程序中断了文件上传“;   ,,,,,,,休息;   ,,,}

6。限制文件类型

如果(美元文件[& # 39;错误# 39;],==,UPLOAD_ERR_OK) {   ,,,,,ext 美元;=,getExt($文件[& # 39;名字# 39;]);   ,,,,,如果(! in_array (ext美元,,allowExt美元)){   ,,,,,,,退出(“非法文件类型“);   ,,,,,}

7。限制是否为真的图片类型

如果(imgFlag美元){   ,,,,,,,如果(! getimagesize($文件[& # 39;tmp_name& # 39;])) {   ,,,,,,,,,退出(“不是真的图片类型“);   ,,,,,,,}   ,,,,,}

8。判断文件大小

如果(美元文件[& # 39;大小# 39;],祝辞,最大容量美元){   ,,,,,,,退出(“文件过大“);   ,,,,,}

9。判断文件是否通过帖子上传

如果(! is_uploaded_file($文件[' tmp_name& # 39;])) {,   退出(“文件不是通过HTTP 职位上传”),,   }

10。重命名文件(唯一且不重复)并保存到目标目录

filename 美元;=,getUniName()干净干净。ext美元;   美元$ destination =,路径!”/懊涝募?   如果(函数($文件[& # 39;tmp_name& # 39;],,目的地美元)){   ,,,,,,,mes 美元;=,“文件上传成功“;   null   null   null   null   null

利用PHP怎么对多个文件进行上传