PHP + jQuery实现ajax文件即时上传 预览

参考:http://www.helloweba.com/view-blog-189.html


<!--test.html-->
<style type="text/css">
    .demo{width:620px; margin: 15px 165px;}
    .demo p{line-height:32px}
    .btn{position: relative;overflow: hidden;margin-right: 4px;display:inline-block;*display:inline;padding:4px 10px 4px;font-size:14px;line-height:18px;*line-height:20px;color:#fff;text-align:center;vertical-align:middle;cursor:pointer;background-color:#5bb75b;border:1px solid #cccccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
    .btn input {position: absolute;top: 0; right: 0;margin: 0;border: solid transparent;opacity: 0;filter:alpha(opacity=0); cursor: pointer;}
    .progress { position:relative; margin-left:100px; margin-top:-24px; width:200px;padding: 1px; border-radius:3px; display:none}
    .bar {background-color: green; display:block; width:0%; height:20px; border-radius: 3px; }
    .percent { position:absolute; height:20px; display:inline-block; top:3px; left:2%; color:#fff }
    .files{height:22px; line-height:22px; margin:10px 0}
    .delimg{margin-left:20px; color:#090; cursor:pointer}
</style>
<script src="../drivers/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript" src="../drivers/jquery.form.js"></script>
<script type="text/javascript" src="../drivers/tongji.js"></script>

<div class="demo">
    <input type="file" style="display:none;"><br/>
    <p>说明:支持xx/xx/xx格式图片</p><!--支持的图片格式,自定义-->
    <div class="btn">
        <span>选择封面</span>
        <input id="fileupload" type="file" name="mypic">
    </div>
    <div class="progress">
        <span class="bar"></span><span class="percent">0%</span >
    </div>
    <div class="files"></div>
    <div id="showimg">
        <?php
        echo $sava_img;
        ?>
    </div>
</div>
<script type="text/javascript">
    $(function() {
        var bar = $('.bar');
        var percent = $('.percent');
        var showimg = $('#showimg');
        var progress = $(".progress");
        var files = $(".files");
        var btn = $(".btn span");
        $("#fileupload").wrap("<form id='myupload' action='test.php' method='post' enctype='multipart/form-data'></form>");
        $("#fileupload").live('change', function() {//$("#fileupload").change(function() {
            var filePath = document.getElementById('fileupload').value;
            if (filePath == "") {
                return;
            }
            var timeStr = "&time=" + new Date().getTime();
            //alert(timeStr);
            document.getElementById("myupload").action = "test.php?img_path=" + timeStr;
            $("#myupload").ajaxSubmit({
                dataType: 'json',
                beforeSend: function() {
                    showimg.empty();
                    progress.show();
                    var percentVal = '0%';
                    bar.width(percentVal);
                    percent.html(percentVal);
                    btn.html("上传中...");
                },
                uploadProgress: function(event, position, total, percentComplete) {
                    var percentVal = percentComplete + '%';
                    bar.width(percentVal);
                    percent.html(percentVal);
                },
                success: function(data) {
                    files.html("<b>" + data.name + "(" + data.size + "k)</b> <span class='delimg' rel='" + data.pic + "'>删除</span>");
                    var img = "" + data.pic;
                    showimg.html("<img width='222px' height='125px' src='" + img + "'>");
                    btn.html("重新选择");
                    document.getElementById('fileupload').value = ''; //
                    document.getElementById('img_src').value = img;
                },
                error: function(xhr) {
                    btn.html("上传失败");
                    bar.width('0')
                    files.html(xhr.responseText);
                    document.getElementById('fileupload').value = '';
                }

            });
        });
        $(".delimg").live('click', function() {
            var pic = $(this).attr("rel");
            $.post("test.php?act=delimg", {imagename: pic}, function(msg) {
                if (msg == 1) {
                    files.html("删除成功.");
                    showimg.empty();
                    progress.hide();
                    document.getElementById('img_src').value = "";
                } else {
                    alert(msg);
                }
            });
        });
    });</script>

<?php
/*
 * test.php
 */
$action = $_GET['act'];
if ($action == 'delimg') {
    $filename = $_POST['imagename'];
    $delPath = $_SERVER['DOCUMENT_ROOT'] . $filename;
    if (!empty($delPath)) {
        unlink($delPath);
        echo '1';
    } else {
        echo '删除失败.';
    }
} else {
    $picname = $_FILES['mypic']['name'];
    $picsize = $_FILES['mypic']['size'];
    if ($picname != "") {
        if ($picsize > 1024000) {
            echo '图片大小不能超过1M';
            exit;
        }
        $type = strstr($picname, '.');
        $type = strtolower($type);
        if ($type != ".gif" && $type != ".jpg" && $type != ".png") {
            echo '图片格式不对!';
            exit;
        }
        //上传路径
        $rootPath = $_SERVER['DOCUMENT_ROOT'];
        list($usec, $sec) = explode(".", microtime());
        $haoMiao = (float) $sec; //毫秒
        $target_path = '/img/test/' . date("/Y/m/d/His_") . $haoMiao . "_orgtemp." . get_extname($_FILES['mypic']['name']);
        creDir($rootPath . $target_path);
        if (!empty($_FILES['mypic']['tmp_name'])) {
            move_uploaded_file($_FILES['mypic']['tmp_name'], $rootPath . $target_path);
        } else {
            $target_path = '';
            msg("上传图片失败!");
        }
    }
    $size = round($picsize / 1024, 2);
    $arr = array(
        'name' => $picname,
        'pic' => $target_path, //$pics,
        'size' => $size
    );
    echo json_encode($arr);
}

// 获得扩展名函数
function get_extname($fname) {
    $temp = explode(".", $fname);
    $where = count($temp) - 1;
    return $temp[$where];
}

//创建一个新的文件夹
function creDir($newPath) {
    $temp = explode('/', $newPath);
    $p = '';
    $result = true;

    $len = count($temp);
    if (!(strpos($temp[$len - 1], '.') === false)) {
        array_pop($temp);
    }
    foreach ($temp as $value) {
        $p.=$value . '/';
        if (!is_dir($p))
            $result = $result && @mkdir($p);
    }
    return $result;
}



当然、有借鉴其他人的地方、感恩···有不同意见的、请发表下···欢迎批评···
求交流···
O(∩_∩)O


与本文章配套的js文件的下载地址:


http://download.csdn.net/detail/zh89233/8437503


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值