@dtinsight/dt-utils
Version:
46 lines (45 loc) • 1.58 kB
JavaScript
import { toBase64 as _toBase64 } from 'js-base64';
import getTypeOfValue from '../getTypeOfValue';
/**
* 将值转换为Base64编码的字符串。
*
* @category 转换
*
* @param {File | Blob | string} value - 需要转换为Base64的值。支持File、string或其他原始类型
* @returns {Promise<string | null | undefined>} 返回一个Promise,解析为Base64编码的字符串。如果输入为null/undefined则返回原始值
*
* @example
* ```typescript
* import { toBase64 } from 'dt-utils';
*
* // 将字符串转换为Base64
* const str = 'Hello World';
* const base64Str = await toBase64(str);
* console.log(base64Str); // 'SGVsbG8gV29ybGQ='
*
* // 将文件转换为Base64
* const file = new File(['file content'], 'test.txt');
* const base64File = await toBase64(file);
* console.log(base64File); // 'data:text/plain;base64,ZmlsZSBjb250ZW50'
*
* // 处理null值
* const result = await toBase64(null);
* console.log(result); // null
* ```
*/
var toBase64 = function (value) {
if (value === undefined || value === null)
return Promise.resolve(value);
return new Promise(function (resolve, reject) {
if (['blob', 'file'].includes(getTypeOfValue(value))) {
var reader_1 = new FileReader();
reader_1.readAsDataURL(value);
reader_1.onload = function () { return resolve(reader_1.result); };
reader_1.onerror = function (error) { return reject(error); };
}
else {
resolve(_toBase64(String(value)));
}
});
};
export default toBase64;