github+jsdelivr 搭建图库 整合typecho

前言

很简陋的功能,但是很实用。后台上传图片的时候。将图片上传到github仓库 然后用jsdelivr做cdn加速!
教程

准备工作

  1. github账户
  2. linux服务器

第一步

修改下面的文件 /etc/sudoers
在最后面添加上www ALL = NOPASSWD: ALL

第二步

打开网站根目录下的文件夹usr/uploads
执行linux命令git init
初始化git 然后成功完成一次远程推送

第三步

在网站/admin/目录下新建UploadToGitHub.php文件,并写入以下代码

<?php

uploadimg();

function uploadimg(){
  
  //设置返回头
  header('Content-Type:application/json; charset=utf-8');

  //提交到缓存区
  shell_exec('cd 这里填写你网站的根路径/usr/uploads && sudo  git add -A');
  
  //提交到本地仓库
  $date = date("Y-m-d H:i:s");
  $commit = 'cd 这里填写你网站的根路径/usr/uploads && sudo  git commit -m "'.$date.'"';
  shell_exec($commit);
  
  //提交到远程仓库
  $result =  shell_exec('cd 这里填写你网站的根路径/usr/uploads && sudo  git push origin master 2>&1');
  
  //将结果返回前端
  $arr = array('result'=> $result);
  echo json_encode($arr);
}

第四步

修改网站根目录/admin/file-upload-js.php文件
添加如图标红所示代码

添加html标签.png

在后面添加如下函数
//自定义事件处理函数
function uploadToGbEvent(el){
   console.log("函数执行了");
    $('.uploadToGB', el).click(function () {
          var t = $(this), p = t.parents('li');
      //上传提示
      t.css("color","grey");
      t.text("Wait...");
      
      
          $.ajax({
          //处理路径
          url:"/admin/UploadToGitHub.php",
          type:"GET",
          dataType:"json",
          success:function(data){
            var result = data["result"];
            //控制台输出
            console.log(result);
            
            if(result.indexOf("这里填写你的仓库地址") >= 0 && result.indexOf("master -> master") >= 0){
                    
                      //处理图片url
                      var url_old = p.data('url');
                      console.log( "old:"+p.data('url'));
                      var url_new = url_old.replace("这里填写你的域名/usr/uploads/","https://cdn.jsdelivr.net/gh/github用户名/仓库名/");
                       p.data('url',url_new);
                      console.log("new:"+p.data('url'));
              
                      t.css("color","green");
                     t.text("Success");
            }else{
                    t.css("color","red");
                     t.text("Error");
                      t.parents(".info").append("<span>错误信息:"+result+"</span>");
            }
          }    
        });
    });     
}
结束

注意

  1. 远程仓库请采用ssh认证的方式 方式需要输入用户名和密码的问题产生。
  2. 一般来说只要保证首次推送成功,就不会有什么问题。
  3. 图片会保存到本地一份,切勿删除。放到github搬家的时候 一键就会打包到服务器 很方便
  4. 如果有遇到错误异常,会在前台打印输出,请根据信息自行处理!
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页