如何将BASE64二进制文件上传至SharePoint文档库及格式转换问题求解
解决方案
首先明确前提:你提到的「BASE64二进制文件」,通常指文件内容本身为BASE64编码序列、以二进制形式读取得到的数据流,核心操作是先把二进制流里的BASE64编码内容提取为字符串,再解码转换为目标格式,以下是不同运行环境的可行实现:
1. 浏览器端实现
转ArrayBuffer
- 第一步:先把读取到的BASE64二进制文件内容(一般是
File/Blob类型)转成文本字符串,用FileReader接口 - 第二步:用浏览器内置的
atob()方法解码BASE64字符串,再逐字节写入Uint8Array,最终得到ArrayBuffer
代码示例:
// 假设base64BinaryFile是你拿到的BASE64二进制文件对象 const reader = new FileReader(); reader.onload = function(e) { // 提取文件内的BASE64字符串,过滤可能存在的data URI前缀(比如data:image/png;base64,) const base64Str = e.target.result.replace(/^data:.+;base64,/, ''); // 解码BASE64 const binaryStr = atob(base64Str); const len = binaryStr.length; const bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binaryStr.charCodeAt(i); } // 最终得到的ArrayBuffer const arrayBuffer = bytes.buffer; } reader.readAsText(base64BinaryFile);
转Blob
拿到上面的ArrayBuffer之后直接构造Blob即可:
// 第二个参数可以根据你的实际文件类型填对应MIME类型,比如'image/png' const blob = new Blob([arrayBuffer], { type: 'application/octet-stream' });
2. Node.js端实现
Node.js内置的Buffer类可以直接处理相关转换,无需额外依赖:
const fs = require('fs'); // 读取BASE64二进制文件 const base64BinaryContent = fs.readFileSync('./你的base64文件路径'); // 转成BASE64字符串后解码 const buffer = Buffer.from(base64BinaryContent.toString().replace(/^data:.+;base64,/, ''), 'base64'); // 转ArrayBuffer const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); // 转Blob(需要Node.js v18以上支持Blob原生接口,低版本可以引入第三方blob包实现) const blob = new Blob([buffer], { type: 'application/octet-stream' });
注意:如果你的BASE64文件存在内容填充符缺失的问题,解码前可以先补全
=填充符,避免解码失败,补全规则为:base64Str.padEnd(base64Str.length + (4 - base64Str.length % 4) % 4, '=')
内容的提问来源于stack exchange,提问作者Matej
相关产品推荐
相关产品推荐

