本文实例讲述了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="/UploadFiles/2021-04-02/bg_09.jpg">
<input type="image"name="imgeField2"src="images/bg_11.jpg">
</tr>
</form>
</table>
(2)在index.php文件中,连接数据库,读取数据库中存储的数据,实现上传文件的分页输出。代码请参考光盘中的相关内容。
(3)创建index.php文件获取表单中提交的数据,将多个文件存储到服务器中,将文件的名称和存储路径存储到数据库中,其代码如下:
复制代码 代码如下:<"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>";
}
"codetitle">复制代码 代码如下:#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程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]