PHP文件上传功能 -- 多文件上传

这一节内容主要介绍PHP上传文件的多文件上传功能。

只要以数组形式来命名表单中的文件上传标记,即可实现多个文件同时上传。

下面我们来看一个例子:

---------------------------------------------------------------------

<form enctype="multipart/form-data" action="<?=$_SERVER[‘PHP_SELF‘]?>" method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="104857600" />

<table>

<tr>

<td>上传文件:<input name="upload_file[]" type="file" size="50" /></td>

</tr>

<tr>

<td>上传文件:<input name="upload_file[]" type="file" size="50" /></td>

</tr>

<tr>

<td>上传文件:<input name="upload_file[]" type="file" size="50" /></td>

</tr>

<tr>

<td>上传文件:<input name="upload_file[]" type="file" size="50" /></td>

</tr>

<tr>

<td><input type="submit" name="submit" value="上传"/></td>

</tr>

</table>

</form>

<?php

function upload($file_error, $file_tmp_name, $file_name){

$info = "";

if($file_name == "")

return $info;

switch($file_error){

case UPLOAD_ERR_INI_SIZE:

$info = $file_name. ": 文件大小超过了服务器的限制";

break;

case UPLOAD_ERR_FORM_SIZE:

$info = $file_name. ": 文件大小超过了浏览器的限制";

break;

case UPLOAD_ERR_PARTIAL:

$info = $file_name. ": 只上传了部分文件";

break;

case UPLOAD_ERR_NO_FILE:

$info = $file_name. ": 没有文件被上传";

break;

case UPLOAD_ERR_NO_TMP_DIR:

$info = $file_name. ": 找不到临时文件夹";

break;

case UPLOAD_ERR_CANT_WRITE:

$info = $file_name. ": 文件写入失败";

break;

case UPLOAD_ERR_OK:

$upload_dir = ‘./‘.iconv("UTF-8","gb2312",$file_name);

if(file_exists($upload_dir)){

$info = $file_name.": 同名文件已经存在";

}else{

if(move_uploaded_file($file_tmp_name,$upload_dir)){

$info = $file_name.": 文件上传成功";

}else{

$info = $file_name.": 文件上传失败";

}

}

break;

}

return $info;

}

if(isset($_POST[‘submit‘])){

$info = ‘‘;

$count = count($_FILES[‘upload_file‘][‘name‘]);

for($i=0; $i<$count; ++$i){

if($_FILES[‘upload_file‘][‘name‘][$i] == "")

continue;

$info = upload(

$_FILES[‘upload_file‘][‘error‘][$i],

$_FILES[‘upload_file‘][‘tmp_name‘][$i],

$_FILES[‘upload_file‘][‘name‘][$i]

);

}

echo $info;

}

?>

--------------------------------------------------------------------------------------

代码执行结果如下:

注意:

1、<input name="upload_file[]" type="file" size="50" />中, name="upload_file[]"一定要以数组形式命名,不然就会出现错误:    “Uninitialized string offset: 0”,这句话的意思是你的数组key值越界了

2、$_FILES[‘upload_file‘][‘name‘][$i]中, upload_file是表单中上传文件标记符的名称,多文件上传时,数组$_FILES的第三维下标会自动从0开始依次编号。

时间: 2024-08-03 02:37:22

PHP文件上传功能 -- 多文件上传的相关文章

达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面

于<采用WinHttp实现HTTP协议Get.Post和文件上传功能>一文中,我已经比較具体地解说了怎样使用WinHttp接口实现各种协议. 在近期的代码梳理中,我认为Post和文件上传模块能够得到简化,于是差点儿重写了这两个功能的代码.由于Get.Post和文件上传功能的基础(父)类基本没有修改,函数调用的流程也基本没有变化,所以本文我将重点解说修改点. (转载请指明出于breaksoftware的csdn博客) 首先我改动了接口的字符集.之前我都是使用UNICODE作为接口參数类型,当中一

实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现

之前我们已经详细介绍了WinHttp接口如何实现Http的相关功能.本文我将主要讲解如何使用libcurl库去实现相关功能.(转载请指明出于breaksoftware的csdn博客) libcurl在http://curl.haxx.se/libcurl/有详细的介绍,有兴趣的朋友可以去读下.本文我只是从实际使用的角度讲解其中的一些功能. libcurl中主要有两个接口类型:CURL和CURLM.CURL又称easy interface,它接口简单.使用方便,但是它是一个同步接口,我们不能使用它

实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现

在<使用WinHttp接口实现HTTP协议Get.Post和文件上传功能>一文中,我已经比较详细地讲解了如何使用WinHttp接口实现各种协议.在最近的代码梳理中,我觉得Post和文件上传模块可以得到简化,于是几乎重写了这两个功能的代码.因为Get.Post和文件上传功能的基础(父)类基本没有改动,函数调用的流程也基本没有变化,所以本文我将重点讲解修改点.(转载请指明出于breaksoftware的csdn博客) 首先我修改了接口的字符集.之前我都是使用UNICODE作为接口参数类型,其中一个

文件上传功能的实现

一:文件上传功能 先要在在index.jsp的界面上初始化一个表单. 代码如下: <body> <form enctype="multipart/form-data" action="<%=path%>/1.jsp" method="post"> 姓名:<input type="text" name="username"/> 选择文件:<input ty

文件上传功能实现(一)

文件上传: ①上传前的准备工作(准备一个注册的表单页面) 创建一个文件上传的控件,点击这个控件就可以选择需要上传的文件了 <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="headimg" /> 注意:上传时表单的上传类型必须是:multipart/

AEAI Miscdp文件上传功能使用心得

1.概述 在实际项目中,我们常常可以遇到这样的情况:上传头像.上传图片.上传视频.上传音乐.上传作业,等等-那么如何使用MiscdpStudio对这类功能进行开发,就成了MiscdpStudio使用者必须掌握的技能之一. 接下来,我就对单表操作模型,简单介绍一下如何对文件进行上传.这里,我们主要使用的是fileupload组件,当然,这也是开发平台中自带的组件. 2.创建数据表 在这里,我们需要在数据库创建两个表,一个是业务表.另一个是关联表.关联表里有三个字段:逻辑主键.业务标识字段.附件标识

iOS 的 Safari 文件上传功能详解

iOS 6 给 Safari 浏览器带来的另外一个功能是文件上传,终于 Safari 终于支持 input 输入框的文件类型了,并且还支持 HTML媒体捕获(HTML Media Capture). 上传单张图片或者视频 <input type="file"> 可以选择直接拍照或者摄影,也可以从相册中选取.选好之后,iOS 上的 Safari 和其他浏览器不同是它显示图片的截图,而不是图片的临时名称. 上传多张图片或者视频 如果你想一次上传多张图片,可以使用 HTML5 一

基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="external nofollow" rel="stylesheet"> <link type="text/css" rel="stylesheet" href="__PUBLIC__/CSS/fileinput.css&qu

Spring MVC 文件上传功能详解

前言 在Spring MVC中实现文件上传功能并不复杂,前端使用HTML语法,后端使用特定抽象.参考Spring Boot相关文档即可.本文主要讲解常见资料忽略的两个问题: 文件上传错误 链接重置问题 版本:Spring Boot 1.5x 文件上传错误 一个关注点是如何处理文件上传期间发生的错误,错误主要分为两类: IOException 文件读取或写入错误. MultipartException 上传文件时,超过文件大小上限所触发的异常. IOException 只需要在Controller