网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 PHP图片、文件批量上传代码
范文
    不管是文件还是图片批量上传我们第一个是在html中做name=userfile[]这种数组变量,在php接受中我们做for ($_i=0; $_i<$_cont; $_i++)遍历这样就可以实现文件批量上传了,下面我来看一个实例
    例子
    代码如下:
    <?php
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
    <html xmlns="">
    <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]就是你的多文件上传项了,只是保存在了数组中。
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/16 4:28:13