文件上传插件 -- 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; width: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{ width:240px;}
    span.size{ width: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="width: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

效果如下 :(很简单) 

 

posted @ 2013-10-16 17:37  泡沫幻想  阅读(1284)  评论(0编辑  收藏  举报