zoukankan      html  css  js  c++  java
  • 文件上传插件 -- plupload

    refresh:重新实例化uploader

         removeFile(id):从file中移除某个文件

      splice(start,length):从队列中start开始删除length个文件, 返回被删除的文件列表

      start() 开始上传

           stop()停止上传

      unbind(name, function): 接触事件绑定

      unbindAll()解绑所有事件

     属性集合:

          features:uploader中包含那些特性

          files:当前队列中的文件列表

          id:uploader实例的唯一id

          runtime:当前运行环境(是html5、flash等等)

          state:当前上传进度状态

          total:当前上传文件的信息集合

        事件集合:(up为uploader缩写)

    BeforeUpload(up, file):文件上传完之前触发的事件

    ChunkUploaded(up, file,response)文件被分块上传的事件

    Destroy(up):uploader的destroy调用的方法

    Error(up, err):上传出错的时候触发

    Fileadded(up, files):用户选择文件时触发

    FileRemoved(up, files):当文件从上传队列中移除触发

    FileUploaded(up, file, res):文件上传成功的时候触发

    Init(up):当初始化的时候触发

    PostInit(up):init执行完以后要执行的事件触发

    QueueChanged(up):当文件队列变化时触发

    Refresh(up):当silverlight/flash或是其他运行环境需要移动的时候触发

    StateChanged(up)当整个上传队列被改变的时候触发

    UploadComplete(up,file)当队列中所有文件被上传完时触发

    UploadFile(up,file)当一个文件被上传的时候触发

    UploadProgress(up,file):当文件正在被上传中触发

    用的时候引入Jquery和plupload的 js,

    HTML文件,如:

    <?php
    <?php
    header( "Content-Type:text/html;charset=utf-8" );
    include_once '../config/db.inc.php';
    $db = new DBconnect("localhost","root","","chahua");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Baby Shop</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script src="../Public/Js/plupload/plupload.min.js"></script>
    <script src="../Public/Js/jquery-1.7.1.min.js"></script>
    
    <link rel="stylesheet" type="text/css" href="../Public/Css/style.css" />
    <style>
        .right_top dl{ margint:0; padding:0;}
        #container{}
        .btn_cl{  background:#E8E8E8;display:inline-block; border:1px solid #8D8D8D;}
        #container a {background:url(../Public/Img/buttons.png) no-repeat; display:inline-block; height:20px; margin:5px; padding-left:20px; 160px;font-size:12px; color:#666;text-decoration:none;}
        #container a#le{ background-position:-182px 0px;}
        .tit span,#filelist div span{ display:inline-block; font-size:14px; color:#333;}
        span.tit_1{ 240px;}
        span.size{ 50px;}
    </style>
    </head>
    
    <body>
        <div class="right_top">
            <dl>
                <dt></dt>
                <dd>新增友情链接</dd>
            </dl>
        </div>
        <div class="content">
            <form action="linkadd.php" method="post" enctype="multipart/form-data">
                <dl>
                    <dt></dt>
                    <dd>名称:<input type="text" name="name" ></dd>
                    <dd>内容:<textarea name="content"></textarea></dd>
                    <dd>地址:<input type="text" name="url"></dd>
                    <dd style="margin: 10px 40px" id="append">
                        <span style="display:inline-block;float:left;margin-left:-41px;">图片:</span>
                        <!--  <input type="file" name="file">-->
                        <div class="tit">
                            <span class="tit_1">文件名</span>
                            <span class="size">大小 </span>
                            <span class="state">状态</span>
                        </div>
                        <div id="filelist"><em>No runtime found.</em></div>
                        <div id="container" style="">
                            
                            <input id="waterImage" type="hidden" name="waterImage" />
                            <span class="btn_cl">
                                <a href="javascript:void(0);" id="uploader" style="">添加图片</a> 
                                <a href="javascript:void(0);" id="le" style="">开始上传</a>
                            </span>
                        </div>
                    </dd>
                    
                    <dd><input type="submit" value="新增"></dd>
                </dl>
            </form>
        </div>
    </body>
    </html>
    <script type="text/javascript">
    var len = 0;
        var uploader = new plupload.Uploader({
            runtimes : 'flash,html5',
            browse_button : 'uploader',
            container: 'container',
            max_file_size : '2600kb',
            url : 'uploads.php',
            flash_swf_url : '../Public/Js/plupload/js/plupload.flash.swf',
            filters : [
                {title : "Image files", extensions : "jpg,gif,png"}
            ]
        });
        
        uploader.init();//初始化
        uploader.bind('FilesAdded', function(up, files) {//添加
    //         uploader.start();
            $("#filelist").find("em").html('');
            $.each(files, function(i, file) {
                $('#filelist').append(
                    '<div id="' + file.id + '"><pan class="tit_1">' +
                    file.name +'</span><span class="size">'+
                      plupload.formatSize(file.size) + '</span> <b></b>' +
                '</div>');
            });
        });
        uploader.bind("FileUploaded",function(up, file, info){//上传完成后预览
            lableinfo = JSON.parse(info.response);
    //         console.log(info.response);
            var url = "../Upload/pic/"+lableinfo.result;
            var str = '<img src="'+url+'" style="80px;height:80px;border:1px solid #666;margin:2px;"/><b></b>';
            $("#append").append(str);
            $('#waterImage').val(lableinfo.result+','+$('#waterImage').val());
            ++len;
            
        });
        uploader.bind('UploadProgress', function(up, file) { //上传进度
            $('#' + file.id + " b").html(file.percent + "%");
        });
        uploader.bind("UploadComplete",function(up,file){//所有都上传完成
            $('#filelist').html(len+"成功!");
        });
        $('#le').click(function(e) {//点击上传
            uploader.start();
            e.preventDefault();
        });
    </script>
    
    ?>

    这里也只是HTMl页面,PHP我们也要写上传方法:(这里面我用面向过程,写的简单)

     1 <?php
     2 <?php
     3 //上传文件错误判定
     4 if($_FILES['file']['error']){
     5     echo "error!";
     6     switch ($_FILES['file']['error']){
     7         case 1: echo '文件尺寸超过允许的最大上传限度!'; break;
     8         case 2: echo '文件尺寸超过允许的最大上传限度!'; break;
     9         case 3: echo '只有部分文件被上传!'; break;
    10         case 4: echo '没有任何文件被上传!'; break;
    11     }
    12     exit;
    13 }
    14 //上传文件格式判定
    15 $type = array('gif', 'jpg', 'png', 'jpeg');  //充许上传文件的类型
    16 // print_r($_FILES);
    17 $name = explode('.',$_FILES["file"]['name']);
    18 if(!in_array($name[1] , $type)){
    19     //echo "<script>alert('上传文件类型错误!');history.back();</script>";
    20     
    21     die('{"result":"'.$_FILES["file"]["name"].'","state":"ERROR"}');
    22 }
    23 //设置文件保存路径
    24 $dirs = "../Upload/pic/";
    25 if(!is_dir($dirs)){
    26     mkdir($dirs);
    27 }
    28 
    29 //文件名的定义,不定义而使用时间戳
    30 $str = explode(".", $_FILES["file"]['name']);
    31 $name = time().rand(100,999);
    32 $upfile = $dirs.$name.".".$str[1];
    33 $savename = $name.".".$str[1];
    34 if(isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES["file"]["tmp_name"])){
    35     if(!move_uploaded_file($_FILES["file"]['tmp_name'],$upfile)){
    36         die('{"result":"错误:没有将文件移动到指定目录!","state":"ERROR"}');
    37     }
    38     die('{"originalName": "'.$_FILES["file"]['name'].'","url":"'.$dirs.'","result":"'.$savename.'","state":"SUCCESS"}');
    39 }else {
    40     die('{"result":"可能文件上传被攻击!文件名:'.$_FILES['file']['name'].'","state":"ERROR"}');
    41 }
    42 ?>
    View Code

    效果如下 :(很简单) 

  • 相关阅读:
    【JAVA】遍历打印目录结构
    Java多线程设计模式(2)
    MBTI职业性格测试你注定是个程序员?
    基于RMI的即时通讯工具的设计与实现
    你在中国有去过那些地区?
    Java多线程设计模式(4)
    学习Unix/Linux编程要学些什么
    在Ubuntu上用Vbox装XP遇到的几个问题
    Java多线程设计模式(3)
    软件架构发展史
  • 原文地址:https://www.cnblogs.com/yuexin/p/3372652.html
Copyright © 2011-2022 走看看