限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >前端技术 >JQuery/js

实例 | WEUI框架uploader上传图片,传入服务器

分类:JQuery/js时间:2018-07-03浏览:6092
weui官网 http://jqweui.com/
// html
图片上传
0/6
// js
$(function() {
    // 允许上传的图片类型  
    var allowTypes = ['image/jpg', 'image/jpeg', 'image/png', 'image/gif'];
    // 1024KB,也就是 1MB  
    var maxSize = 1024 * 1024;
    // 图片最大宽度  
    var maxWidth = 300;
    // 最大上传图片数量  
    var maxCount = 1;
    $('.js_file').on('change', function(event) {
        var files = event.target.files;

        // 如果没有选中文件,直接返回  
        if (files.length === 0) {
            return;
        }

        for (var i = 0, len = files.length; i < len; i++) {
            var file = files[i];
            var reader = new FileReader();

            // 如果类型不在允许的类型范围内  
            if (allowTypes.indexOf(file.type) === -1) {
                $.weui.alert({
                    text: '该类型不允许上传'
                });
                continue;
            }

            if (file.size > maxSize) {
                $.weui.alert({
                    text: '图片太大,不允许上传'
                });
                continue;
            }

            // if ($('.weui_uploader_file').length >= maxCount) {
            //     $.weui.alert({
            //         text: '最多只能上传' + maxCount + '张图片'
            //     });
            //     return;
            // }

            reader.onload = function(e) {
                var img = new Image();
                img.onload = function() {
                    // 不要超出最大宽度  
                    var w = Math.min(maxWidth, img.width);
                    // 高度按比例计算  
                    var h = img.height * (w / img.width);
                    var canvas = document.createElement('canvas');
                    var ctx = canvas.getContext('2d');
                    // 设置 canvas 的宽度和高度  
                    canvas.width = w;
                    canvas.height = h;
                    ctx.drawImage(img, 0, 0, w, h);
                    var base64 = canvas.toDataURL('image/png');

                    // 插入到预览区  
                    var $preview = $('
  • 0%
  • '); $('.weui_uploader_files').html($preview); $(".weui_uploader_files").css("background","none"); var num = $('.weui_uploader_file').length; $('.js_counter').text(num + '/' + maxCount); // 然后假装在上传,可以post base64格式,也可以构造blob对象上传,也可以用微信JSSDK上传 var progress = 0; function uploading() { //上传区域代码 $preview.find('.weui_uploader_status_content').text(++progress + '%'); if (progress < 100) { setTimeout(uploading, 30); } else { // 如果是失败,塞一个失败图标 //$preview.find('.weui_uploader_status_content').html(''); $preview.removeClass('weui_uploader_status').find('.weui_uploader_status_content').remove(); } } setTimeout(uploading, 30); }; img.src = e.target.result; // alert(img.src); $.post("__APP__/public/up_weui.html", { img: e.target.result},function(res){ if(res.img!=''){ alert('upload success'); // $('#showimg').html(''); }else{ alert('upload fail'); } },'json'); }; reader.readAsDataURL(file); } }); });
    // php
    public function up_weui(){
        $img = isset($_POST['img'])? $_POST['img'] : '';
         
        // 获取图片
        list($type, $data) = explode(',', $img);
         
        // 判断类型
        if(strstr($type,'image/jpeg')!=''){
            $ext = '.jpg';
        }elseif(strstr($type,'image/gif')!=''){
            $ext = '.gif';
        }elseif(strstr($type,'image/png')!=''){
            $ext = '.png';
        }
        // 生成的文件名
        $uploads = "uploads/";
        $path = rtrim($uploads,'/')."/".date('Y/m/d/');
        if(!file_exists($path)){
            mkdir($path,0777,true);
        }
        $photo = $path.time().$ext;
    
        // 生成文件
        file_put_contents($photo, base64_decode($data), true);
        // 返回
        header('content-type:application/json;charset=utf-8');
        $res = array('img'=>$photo);
        
        echo json_encode($res);
    }
    本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
    0/500
    Share your thoughts respectfully.