将文件编码为 Base64

支持文件:jpgpnggifhtmlcssjs

let path = ""; // 文件路径
path = fileToBase(path);
log(path);

function fileToBase(p) { // 文件编码
    let data, lack;
    data = byteToBit(files.readBytes(p));
    // 补位
    lack = 6 - data.length % 6;
    for (let i = 0; i < lack; i++) {
        data += "0";
    }
    data = bitToBase(data);
    // 加入文件信息
    data = "data:" + fileType(p) + ";base64," + data;
    for (let i = 0; i < lack / 2; i++) {
        data += "=";
    }
    return data;
}

function byteToBit(b) { // 字节数组转二进制字符串
    let bit = "";
    b.forEach((i) => {
        i = (i < 0 ? i + 256 : i).toString(2);
        if (i.length < 8) {
            // 字节补位
            i = i.split("");
            i.reverse();
            for (let j = i.length; j < 8; j++) {
                i[j] = "0";
            }
            i.reverse();
            i = i.join("");
        }
        bit += i;
    });
    return bit;
}

function bitToBase(b) { // 编码器
    let code = [],
        base = "",
        key;
    // 分组,6 位一组
    for (let i = 0; i < b.length; i += 6) {
        code.push(b.substr(i, 6));
    }
    // 建立编码对照表
    key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
    code.forEach((i) => {
        base += key[parseInt(i, 2)];
    });
    return base;
}

function fileType(f) { // 文件类型判断
    // 文件后缀列表
    let img = ["jpeg", "png", "gif"],
        txt = ["css", "html", "js"];
    f = files.getExtension(f);
    if (f == "jpg") f = "jpeg"; // jpg 是 jpeg 的简写
    for (let i = 0; i < img.length; i++) {
        if (f == img[i]) {
            return "image/" + img[i];
        }
    }
    for (let i = 0; i < txt.length; i++) {
        if (f == txt[i]) {
            return "text/" + txt[i];
        }
    }
    // 错误提示
    f = "不支持此类型文件!";
    toast(f);
    console.error(f);
    exit();
}
最后由 Zhan 0 编辑

然后呢?
base64信息哪去了

@吾小牛将文件编码为 Base64 中说:

然后呢?
base64信息哪去了

fileToBase() 的返回值就是转换后的 Base64 文本

最后由 Zhan 0 编辑
  • 3
    帖子
  • 1029
    浏览

与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待