独书先生 Menu

All items for 2月, 2021

base64转blob并下载文件

需求

支持文件转为base64,base64转blob,blob下载为文件

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>base64 to file</h2>
    <textarea name="" id="text-area" cols="30" rows="10" style='width:100%;height: 200px;' placeholder="Paste base64 string here"></textarea>
    <button class="download-btn" style='width: 150px;height:50px;display: block;margin:10px auto;'>Download</button>
    <script>

            /**
            * 上传附件转base64
            * @param {File} file 文件流
            */
            const fileByBase64 = (file, callback) => {
                var reader = new FileReader();
                // 传入一个参数对象即可得到基于该参数对象的文本内容
                reader.readAsDataURL(file);
                reader.onload = function (e) {
                    // target.result 该属性表示目标对象的DataURL
                    console.log(e.target.result);
                    callback(e.target.result)
                };
            }
            /**
            * base64转Blob
            * @param {*} data 
            */
            const base64ByBlob = (base64, callback) => {
                var arr = base64.split(','), mime = arr[0].match(/:(.*?);/)[1],
                    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
                while (n--) {
                    u8arr[n] = bstr.charCodeAt(n);
                }
                console.log(new Blob([u8arr], { type: mime }))
                callback(new Blob([u8arr], { type: mime }))
            }

            document.querySelector('.download-btn').addEventListener('click',function(e) {
                const base64 = document.querySelector('.text-area').inneerText;

                // fileByBase64(file, (base64) => {
                    base64ByBlob(base64, (blob) => {
                    // var url = window.URL.createObjectURL(blob)


                    const fileName = `${new Date().valueOf()}.txt`;
                    const link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    link.download = fileName;
                    link.click();
                    window.URL.revokeObjectURL(link.href);
                })
                // })

            })


    </script>
</body>
</html>

js倒计时自定义小时分钟

需求

实现一个倒计时一小时的网页应用

代码







Document

小时
分钟
<p class="count"></p>

<button id="start">START</button>
<script>
  window.onload = function () {
    // countDown();

    document.querySelector("#start").addEventListener("click", () => {
      function addZero(i) {
        return i < 10 ? "0" + i : i + "";
      }

      var hour = document.querySelector("#hour");
      var min = document.querySelector("#min");
      var countTimeHour = parseInt(hour.value === "" ? "1" : hour.value);
      var countTimeMin = parseInt(min.value === "" ? "0" : min.value);

      var nowtime = new Date(); //你已知的时间
      var t_s = nowtime.getTime(); //转化为时间戳毫秒数
      var endtime = new Date(); //定义一个新时间
      t_s = t_s + 1000 * 60 * countTimeMin; //设置新时间比旧时间多一分钟
      t_s = t_s + 1000 * 60 * 60 * countTimeHour; //设置新时间比旧时间多一小时;
      endtime.setTime(t_s);
      // nt.setTime(t_s+1000*60*60*24);//设置新时间比旧时间多一天

      countDown();

      function countDown() {
        var nowtime = new Date(); //你已知的时间
        //   var endtime = new Date("2019/03/16,17:57:00");
        var lefttime = parseInt(
          (endtime.getTime() - nowtime.getTime()) / 1000
        );
        var d = parseInt(lefttime / (24 * 60 * 60));
        var h = parseInt((lefttime / (60 * 60)) % 24);
        var m = parseInt((lefttime / 60) % 60);
        var s = parseInt(lefttime % 60);
        d = addZero(d);
        h = addZero(h);
        m = addZero(m);
        s = addZero(s);
        document.querySelector(
          ".count"
        ).innerHTML = `活动倒计时  ${d}天 ${h} 时 ${m} 分 ${s} 秒`;
        if (lefttime <= 0) {
          document.querySelector(".count").innerHTML = "Time Over!";
          var isShow = false;
          setInterval(() => {
            isShow = !isShow;
            if (isShow) {
              document.title = "😆Time Over!";
            } else {
              document.title = "";
            }
          }, 1000);
          return;
        }
        setTimeout(countDown, 1000);
      }
    });
    // window.countDown = function () {

    // };
  };
</script>



分享一个支付宝自动集五福脚本

Alipay-wufu-1.0.1

介绍

Alipay-wufu-1.0.1工具,支付宝自动集五福

说明

  1. 首先输入要领取的站点开始的序号,总共53个站点可以领取
  2. 每隔60s会自动切换到下个站点进行领取,已经领取成功的,会进行记录,下次程序运行时将忽略领取成功的站点
  3. 如果要换手机号领取,需要重新解压这个压缩包,把success.json覆盖掉,不然会因为上个手机号领取成功的站点而进行跳过。

注意

  1. 支付宝此活动不能连续获得60(2月3日,根据大家的情况反映,支付宝已经把风控数量调整到10个验证码左右,24小时后解除风控)个验证码,否则24小时内无法再参加此次活动!
  2. 程序暂无GUI页面,先凑合着用把。site.json和success.json必须和程序在一个目录,否则程序会闪退!
  3. 因为打包环境是64位的,所以程序不支持32位操作系统。
  4. 因为此次支付宝五福为了让大家交换卡,每人获得除了敬业福之外的随机两种福的概率是最大的,所以一般会大量开出两种福,这是正常现象。

声明

该项目分享自互联网,仅用于测试学习目的,该仓库及所有人不负任何损失责任。侵删。

下载地址

Alipay-wufu-1.0.1