首页 / 值得一看 / zblog教程 / 正文

zblog简单方法实现ajax上传文件并调用

2022-10-22zblog教程阅读 382

zblog简单方法实现ajax上传文件,只需要简单的操作即可实现,使用方法也是最便捷的,只需要使用下面的php和JavaScript代码复制到你的插件或主题中,将“你的插件ID”改为你实际的插件或主题的ID

php代码

Add_Filter_Plugin('Filter_Plugin_Cmd_Ajax','你的插件ID_Cmd_Ajax'); //挂载接口function 你的插件ID_Cmd_Ajax($src){
    global $zbp;
    if ($src == '你的插件ID_upload'){
        
        $json = array('code' => 1);
        
        try {
            if (!$zbp->CheckRights('UploadPst')) {
                $zbp->ShowError(6);
            }
            
            $_POST['auto_rename'] = 1;
            $upload = PostUpload(); //这里要求zblog版本在1.7以上
            
            $json['data'] = array(
                'url'        => $upload->Url,
                'size'       => $upload->Size,
                'name'       => $upload->Name,
                'sourceName' => $upload->SourceName
            );
            
        } catch (Exception $e) {
            $json['code'] = 0;
            $json['msg'] = $e->getMessage();
        }
        
        exit(json_encode($json));
    }}

JavaScript代码

function upload(option){
    var id = 'ajax_upload' + new Date().getTime();
    var body = $('body');
    var clickBtn = $(this);
    var originText = clickBtn.text();
    
    body.append(`<input type="file" id="${id}" accept="${option.accept}" style="display:none">`);
    body.one('change', '#' + id, function(){
        var form = new FormData();
        form.append('file',$(this)[0].files[0]);
        $.ajax({
            url: ajaxurl + '你的插件ID_upload',
            type: 'POST',
            dataType: 'json',
            data: form,
            contentType: false,
            processData: false,
            xhr: function() {
                var xhr = new XMLHttpRequest();
                xhr.upload.addEventListener('progress', function (e) {
                    if (e.lengthComputable) {
                        var per = Math.floor(e.loaded / e.total * 100);
                        if (typeof option.progress === 'function'){
                            option.progress(per, clickBtn);
                        }else{
                            clickBtn.attr('disabled', true).text(`上传中...${per}%`);
                        }
                    }
                });
                return xhr;
            },
            success:function(res){
                if (typeof option.success === 'function'){
                    option.success(res, clickBtn);
                }else if(res.code == 0){
                    alert(res.msg);
                }else if(res.code == 1){
                    var url = res.data.url;
                    if (option.img){
                        $(option.img).attr('src', url);
                    }
                    
                    if (option.input){
                        $(option.input).val(url);
                    }
                }
            },
            error:function(res){
                if (typeof option.error === 'function'){
                    option.error(res, clickBtn);
                }else{
                    alert('上传失败');
                }
            },
            complete: function(){
                clickBtn.attr('disabled', false).text(originText);
            }
        });
    });
    
    $('#' + id).click();
    
    return false;}

调用方法

例一(仅允许上传指定文件类型并将图片url填充到指定文本框)

<button type="button" onclick="upload.call(this, {input: '[name=logo]', accept: '.png,.jpg,.jpeg'})">上传</button>添加一个上传按钮,仅允许png jpg jpeg图片,上传成功后自动将图片url填充到 name=logo 的文本框

例二(将上传后的图片链接填充到指定文本框,修改指定图片的src为图片链接)

<button type="button" onclick="upload.call(this, {input: '[name=banner]', img: '.catebanner', accept: '.png'})">上传</button>添加一个上传按钮,仅允许png图片,上传成功后自动将图片url填充到 name=banner 的文本框,并且改变 .catebanner 图片的链接

例三(自定义回调函数)

<button type="button" onclick="upload.call(this, {success: 'uploadSuccess', accept: '.png'})">上传</button><script>function uploadSuccess(res, button){
  alert('上传成功');
  alert('图片链接:' + res.data.url);}</script>


信息由用户投稿以及用户自行发布,真实性、合法性由发布人负责,涉及到汇款等个人财产或隐私内容时请仔细甄别,注意防骗!如有侵权,请联系:wwwlaoyuwang#126.com(#=@)!我们会第一时间核实处理!

相关推荐

  • 虚拟主机中zblog如何强制全站https

    网站改版升级了https安全访问,可之前搜索引擎收录的全部都是http的链接,如果不做301重定向,别人访问时,进入的依旧不是安全链接。如何把zblogPHP全站http301重定向到https的域名...

    102zblog教程2023-10-01
  • zblogphp使用GetArticleList、GetList函数调用热门文章列表

    一般我们调用ZBLOGPHP文章的时候会用到最新文章、点击数、评论数文章调用,同时我们还可能会在一些特定的位置调用本周、本月、本年度的热门文章。热门文章目录文件:zb_system/funct...

    227zblog教程2023-07-05
  • zblog修改列表分页条首页/上页/下页/末尾符号为文字

    Z-Blog使用{template:pagebar}调用的翻页条是用‹‹、‹、›、››符号分别表示首页、上一篇、下一页和最后一页,如果不想用符号直接显示中文怎么办?可以尝试使用翻页条源代码来修改或者通...

    213zblog教程2023-06-12
  • zblog搜索页面制作教程

    搜索功能是一个网站中必不可少的功能,同样在zblog模板中也支持搜索页面的制作,而zblog中的搜索页面是要用一个单独模板来制作的,下面来进行一下讲解本文讲解是以zblog新版本为例来演示的。首先,先...

    261zblog教程2023-06-11
  • ZblogPHP调用某个分类的随机文章

    随机文章是非常常见的内容模块,有利于提高网站整体的收录。区别于常见的CMS,我发现Zblog并没有表情直接调用随机文章,那么,我们要实现调用某个分类的随机文章,应该怎么实现呢?随机文章从网上看到的随机...

    384zblog教程2023-05-10