PHP图片、文件批量上传代码

   不管是文件还是图片批量上传我们第一个是在html中做name=userfile[]这种数组变量,在php接受中我们做for ($_i=0; $_i<$_cont; $_i++)遍历这样就可以实现文件批量上传了,下面我来看一个实例

  例子

 代码如下  

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP文件批量上传</title>
<style>
* {margin:0; padding:0; list-style:none;}
.content {width:400px; height:auto; margin:0 auto; margin-top:60px; padding-bottom:30px; background:#ffd3b6; border:dashed 1px #f90}
.content h1 { width:400px; height: 30px; line-height:30px; text-align:center; font-family:"微软雅黑"; font-size:14px; color:#000}
.content .error {width:300px; height:auto; line-height:30px; text-align:center; margin:0 auto; color:#f00}
.content .con {width:340px; height:auto; margin:0 auto; font-size:12px;}
.content #file { width:280px; height:20px; border:solid 1px #ccc; background:#fff; margin:10px 0px 6px 0; font-size:12px;}
.content #send { width:60px; height:22px; border:solid 1px #ccc; background:#fff; font-size:12px; margin-top:10px;}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
$(document).ready(function() {
$('#cont').val($('.file #file').size());
$('#send').eq(0).click(function() {
var filesize=$('.file #file').size();
$('.file').append("<input type='file' name='userfile[]' id='file'/>");
$('#cont').val(filesize+1);
});
});
</script>
</head>
<body>
<div>
<h1>PHP文件批量上传</h1>
<div>
<div>
<?php
if ($_GET['up']==up) {
//防止重复提交
if ($_SESSION['file']==$_GET['irand']) {
$_cont=intval($_POST['cont']);   //将file框总数接收并转换成整型
$_size=20000;                    //设置限制文件大小
$_dir='pdir/';                   //文件保存目录
function size($_size) {
//判断文件大小是否大于1024bit 如果大于,则将大小取值为KB,以此类推
if ($_size>1024*1024) {
return round($_size/1024/1024,2).' MB';
}else if ($_size>1024) {
$_size=$_size/1024;
return ceil($_size).'KB';
}else {
return $_size.' bit';
}
}
//设置上传图片的类型,设置图片上传大小
$_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
//利用for循环上传文件
for ($_i=0; $_i<$_cont; $_i++) {
if (is_array($_upfiles)) {
if (!in_array($_FILES['userfile']['type'][$_i],$_upfiles)) {
exit('请上传格式为:jpg,png,gif的文件<br /><a href="pupload.php">返回</a>');
}
}
//判断文件大小
if ($_FILES['userfile']['size'][$_i]>$_size) {
exit('上传文件不能超过:'.size($_size));
}
//检测文件是否已经上传
if ($_FILES['userfile']['error'][$_i]>0) {
switch ($_FILES['userfile']['error'][1]) {
case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
break;
case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
break;
case 3: echo '文件只有部分被上传';
break;
case 4: echo '没有文件被上传';
break;
case 6: echo '找不到临时文件夹';
break;
case 7: echo '文件写入失败';
break;
}
exit;
}
//获取文件扩展名
if (!is_dir($_dir)) {
mkdir($_dir,0700);
}
//生成随笔数
$_rand=mt_rand(0,100000);
//获取文件扩展名
$_n=explode('.',$_FILES['userfile']['name'][$_i]);  //将文件名分割
$_file_len=count($_n);         //返回数组长度
//确保获取的扩展名是最后一个.后面的
$_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1];
//移动文件到指定的目录
if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) {
if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) {
exit('文件移动失败');
}else {
echo '文件上传成功<br />';
echo '文件路径:'.$_name.'<br />';
echo '文件大小:'.size(filesize($_name));
echo '<br /><a href="pupload.php">返回继续上传</a>';
}
}else {
exit('上传的临时文件不存在,无法将文件移动到指定文件夹');
}
}
//销毁session变量,有几种方法
//第一种,销毁所有session变量:session_destroy();
//第二种:销毁单个如:$_SESSION['file']=''
session_destroy();
exit;

}else {
exit('您已经提交过了,不能重复提交<br /><a href="pupload.php">返回</a>');
}
}
?>
</div>
<?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?>
<form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="hidden" name="cont" value="" id="cont" />
<div>
<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>
</div>
<br />
<input type="button" name="send" value=" 添加一个 " id="send"/>
<input type="submit" name="send" value=" 点击上传 " id="send"/>
</form>
</div>
</div>
</body>

  核心原理分析

  在多文件上传中我们前台最重要的是

 代码如下  

<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>
<input type="file" name="userfile[]" id="file"/>

  这几行代码有细节的朋友会发现name="userfile[]"了,这个是以数组存储了,这样我们如果使用js也可以这样增加就可以了,那么在php是如何获取的呢

  在多文件上传中php处理是一个关键

 代码如下  

for ($_i=0; $_i<$_cont; $_i++) {
if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) {
if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) {
exit('文件移动失败');
}else {
echo '文件上传成功<br />';
echo '文件路径:'.$_name.'<br />';
echo '文件大小:'.size(filesize($_name));
echo '<br /><a href="pupload.php">返回继续上传</a>';
}
}

  这里显示很简单我们会看到有一个for,for就是遍历数组,遍历userfile[]数组,然后再由$_FILES['userfile']['tmp_name'][$_i]来获取不同文件图片再进行上传即可,注意[$_i]就是你的多文件上传项了,只是保存在了数组中。

时间: 2024-09-22 01:19:46

PHP图片、文件批量上传代码的相关文章

asp 文件 批量上传

 关键字:asp 批量上传   asp 图片批量上传     批量上传文件    asp 上传文件      asp文件上传代码   php 文档批量上传 , 好了,我们今天看来看文件批量上传代码与方法吧,首先我们用到三个文件,upload_5xsoft.inc ,upload.asp,up.asp这三个文件,下面我们一一讲解这个三个文件,并贴出相应代码: 先来看看upload_5xsoft.inc吧,这里文件扩展名为什么为inc我就不讲了,不懂得可以到本站去搜索. <SCRIPT  RUNAT

asp.net文件批量上传下载代码与详细说明

asp教程.net文件批量上传下载代码与详细说明 private void DownLoadCompressFile()         {             //create file package             List<CompanyFileDomain> lists = new List<CompanyFileDomain>();             if (DeluxeGridFiles.SelectedKeys.Count > 0)     

Plupload功能强大的多文件批量上传插件

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件. Plupload功能强大的多文件批量上传插件 Plupload这个JavaScript控件可以让你选择Adobe Flash.Google Gears.HTML5.Microsoft Silverlight.Yahoo BrowserPlus或正常表单Form等多种方法进行文件上传. Plupload还提供其它

jquery插件uploadify实现带进度条的文件批量上传_jquery

有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案,分享给大家供大家参考,具体如下 先上效果图: 具体代码如下: 在页面中如下 完整页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <

HTML5实现图片文件异步上传

原文:HTML5实现图片文件异步上传 利用HTML5的新特点做文件异步上传非常简单方便,本文主要展示JS部分,html结构.下面的代码并未使用第三发库,如果有参照,请注意一些未展现出来的代码片段.我这边的效果预览: 1.文件未选择 2.文件已选择 HTML代码部分: 思路:下面代码中我利用css的z-index属性将input="file"标签隐藏在了id=btnSelect元素下面,通过触发a标签的点击后,弹出文件选择框.下面的masklayer用于点击确认按钮后的弹出层,避免用户重

用C#写个WinForm应用程序,如何能实现到www.docin.com的文件批量上传

问题描述 用C#写个WinForm应用程序,如何能实现到www.docin.com的文件批量上传,请各位发表下看法,或者有什么好的思路 解决方案 解决方案二:用webClient循环上传~解决方案三:能具体点吗?谢谢!!!解决方案四:我要把文件上传到他们的网站上啊.如果是只在他们网站上传的话一次只能一篇.我想批量传一下.我用C#写WinForm程序,1.第一个窗体里用一个WebBrowser控件来转到www.docin.com的网址,然后通过这个网址登陆.2.登陆过后点击一个自己设置的批量上传按

2个Codeigniter文件批量上传控制器写法例子_php实例

例子一: /** * 多文件上传 * * @author Dream <dream@shanjing-inc.com> */ public function multiple_uploads() { //载入所需类库 $this->load->library('upload'); //配置上传参数 $upload_config = array( 'upload_path' => '', 'allowed_types' => 'jpg|png|gif', 'max_siz

asp图片批量上传代码(1/3)

index.asp教程 上传演示 img_class.asp 获取图片的高度和宽度的类 oupload.asp 上传处理 conn.asp 这个就不用我来说了.连接数据库教程的. upload_class.asp采用艾恩无组件上传类 可以通过oupload.asp进行设置上传文件类型,大小,是否开启生成缩略图, 默认是开启的..但是要你的空间支持:aspjpeg组件..现在的空间基本都支持. <!--#include file="conn.asp"--> <!doct

php文件上传代码(支持文件批量上传)

本款文件上传类,默认是上传单文件的,我们只要修改$inputname ='files'为你的表单名就可以方便的实现批量文件上传了. $savename = ''保存文件名, $alowexts = array()设置允许上传的类型,$savepath = ''保存路径. */  代码如下 复制代码 class upload {  public $savepath;  public $files;  private $error;  function __construct($inputname