PHP多个文件上传到服务器实例

 更新时间:2014年10月29日 14:15:36   投稿:shichen2014  
这篇文章主要介绍了PHP多个文件上传到服务器的实现方法,以实例形式详细讲解了多文件传递过程中的数组应用及数据遍历上传等技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP多个文件上传到服务器的实现方法。对于多个文件同时上传到服务器的情况来说,我们需要使用到数组形式的参数传递及数据的遍历上传即可,具体的操作步骤分析如下:

一、实例说明

上传图片到服务器,是程序开发过程中必不可少的一个功能。它不但可以达到图片共享的目的,而且可以提高网站的访问量,丰富网站的内容。在本实例中,讲解如何通过POST方式实现多图片上传。

二、关键技术

多文件上传的关键是如何定义上传文件元素的名称及如何判断上传文件的数量。在本实例中,以数组的形式定义上传文件的名称(上传文件的名称是“files[]”)。为了达到可以上传任意数量图片(4个图片以内)的目的,在对上传文件进行处理的过程中应用array_filter()函数和回调函数去除数组中的空元素。

array_filter()函数,用回调函数过滤数组中的单元,语法如下:

复制代码 代码如下:
array array_filter(array input[,callback callback])

array_filter()函数依次将input数组中的每个值传递到callback函数。如果callback函数返回TRUE,则input数组的当前值会被包含在返回的结果数组中,并且数组的键名保留不变。

说明:在回调函数中不要对数组进行修改操作,例如,增加或者删除数组中的元素,如果一旦数组改变,那么此函数的运用也就没有意义了。如果没有提供callback()函数,array_filter()将删除input中所有等值为FALSE的元素。
本实例中定义的回调函数是check(),用于验证数组中的元素值是否为空,其语法如下:

复制代码 代码如下:
function check($var){//验证数组的返回值是否为空
return($var!="");
}

说明:通过POST方法实现多图片上传,在创建form表单时,必须指定enctype="multipart/form-data"属性。如果要通过隐藏域MAX_FILE_SIZE的值对上传文件的大小进行控制,那么必须将隐藏放置在上传文件的文件域之前,否则是不会起作用的。

三、设计过程

(1)创建index.php文件。添加表单,设置文件域、提交按钮,使用POST方法,设置enctype="multipart/form-data",将数据提交到index_ok.php页,完成多个文件的上传操作,其关键代码如下:

复制代码 代码如下:
<table width="750"border="0"cellspacing="0"cellpadding="0">
<form action="index_ok.html"method="post"enctype="multipart/form-data"name="form1">
 <tr>
 <td width="100"height="25"align="right"class="STYLE1">内容1:</td>
 <td width="150"align="center"><input name="files[]"type="text"id="files[]"size="15"></td>
 <td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td>
 </tr>
 <tr>
 <td height="25"align="right"class="STYLE1">内容2:</td>
 <td width="center"><input name="files[]"type="text"id="files[]"size="15"></td>
 <td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td>
 </tr>
 <tr>
<td colspan="3"align="center">
 <input type="image"name="imageField"src="images/bg_09.jpg">&nbsp;&nbsp;&nbsp;&nbsp;
 <input type="image"name="imgeField2"src="images/bg_11.jpg"></td>
</tr>
</form>
 </table>

(2)在index.php文件中,连接数据库,读取数据库中存储的数据,实现上传文件的分页输出。代码请参考光盘中的相关内容。

(3)创建index.php文件获取表单中提交的数据,将多个文件存储到服务器中,将文件的名称和存储路径存储到数据库中,其代码如下:

复制代码 代码如下:
<?php
header("Content-type:text/html;charset=UTF-8"); //设置文件编码格式
include"conn/conn.php"; //包含数据库链接文件
if($_POST[files]!=""){
if(! is_dir("./upfile")){
mkdir("./upfile");//创建上传文件存储文件夹
}
$data=date("Y-m-d H:m:s");//定义时间
function check($var){ //验证数组的返回值是否为空
 return($var!="");//如果不为空则返回数组元素
}
$files=array_filter($_POST["files"],"check");//去除数组中空值
$array=array_filter($_FILES["picture"]["name"],"check"); //去除数组中空值
foreach=($aarray as $key=>value){ //循环读取数组中数据
 $path='upfile/'.time().$key.strtolower(strstr($value,".")); //定义上传文件存储位置
 move_uploaded_file($_FILES["picture"]["tmp_name"][$key],$path);//执行上传操作
 $query="insert into tb_up_file(file_test,data,file_name)values('$path','$data''$files[$key]')";
 $result=mysql_query($query);
}
echo"<script>
alert('图片上传成功');window.location.href='index.html';</script>";
 }
 ?>

四、技巧补充

通过伪静态技术隐藏PHP文件后缀。
首先,修改Apache服务器的配置文件httpd.conf。打开httpd.conf文件,定位到如下位置:

复制代码 代码如下:
#LoadModule rewrite_module modules/mod_rewrite.so

将该项前面的“#”去掉后启动该项。
然后,查找httpd.conf文件,找到其中的AllowOverride项,将它的值都修改为All。保存并重新启动Apache服务器,使修改生效。
最后,在实例根目录下创建.htaccess文件,实现对PHP文件后缀的隐藏操作。.htaccess文件的代码如下:

复制代码 代码如下:
RewriteEngine On#启动项
RewriteRule^index.html$ index.php
RewriteRule^ndex_ok.html$ index_ok.php
RewriteRule^index-([0-9]+)-([0-9]+)-([0-9]+)\.html$ index.php?vv=$1&ljjl=$2&page=$3[L]

通过正则表达式对文件的后缀和传递的参数进行匹配,完成对PHP文件后缀的隐藏操作。

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

  • php 魔术方法详解

    php 魔术方法详解

    本文给大家介绍了php面向对象当中的几个魔术方法,并对此进行一一详细介绍,希望对新手有所帮助。
    2014-11-11
  • 浅析php中常量,变量的作用域和生存周期

    浅析php中常量,变量的作用域和生存周期

    以下是对php中常量,变量的作用域和生存周期进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • 解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)

    解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)

    这篇文章主要解决wincache不支持64位PHP5.5/5.6的问题,并提供64位wincache的下载,需要的朋友可以参考下。
    2016-06-06
  • PHP whois查询类定义与用法示例

    PHP whois查询类定义与用法示例

    这篇文章主要介绍了PHP whois查询类定义与用法,结合实例形式分析了php定义及使用whois查询类进行网站whois查询的相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • php实现的zip文件内容比较类

    php实现的zip文件内容比较类

    这篇文章主要介绍了php实现的zip文件内容比较类及其用法,可实现比较两个zip文件的内容,返回新增、删除、及相同的文件列表,是非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • php密码生成类实例

    php密码生成类实例

    这篇文章主要介绍了php密码生成类,可实现根据要求生成多种格式密码的功能,是一款非常实用的PHP类文件,需要的朋友可以参考下
    2014-09-09
  • php实现Session存储到Redis

    php实现Session存储到Redis

    这篇文章主要介绍了php实现Session存储到Redis的方法,php Session可以保存到文本或者内存、还有数据库,本文讲的是存到Redis的方法,
    2015-11-11
  • php print EOF实现方法

    php print EOF实现方法

    配对标记名的结尾标记名应单独一行,前后均不允许输出字符...(例如空格等不可见但存在的字符..)
    2009-05-05
  • PHP rawurlencode与urlencode函数的深入分析

    PHP rawurlencode与urlencode函数的深入分析

    本篇文章是对PHP中的rawurlencode与urlencode函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php阿拉伯数字转中文人民币大写

    php阿拉伯数字转中文人民币大写

    这篇文章主要介绍了php阿拉伯数字转中文大写金额,分享了两种实现方法,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论