|
|
- // @ts-nocheck
- // fileToBase64, fileToDataURL,dataURLToFile
-
- export function fileToBase64(filePath : string) {
- return new Promise((resolve, reject)=>{
- if(uni.canIUse('getFileSystemManager')){
- uni.getFileSystemManager().readFile({
- filePath: path,
- encoding: 'base64',
- success: (res) => {
- resolve(res.data)
- },
- fail: (error) => {
- console.error({ error, path })
- reject(error)
- }
- })
- } else {
- reject('fileToBase64:环境不支持')
- }
- })
-
- }
- export function fileToDataURL(filePath : string) {
- let extension = path.substring(path.lastIndexOf('.') + 1);
- const imageExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "svg"];
- const isImageFile = imageExtensions.includes(extension.toLowerCase());
- let prefix = ''
- if (isImageFile) {
- prefix = 'image/';
- if(extension == 'svg') {
- extension += '+xml'
- }
- } else if (extension === 'pdf') {
- prefix = 'application/pdf';
- } else if (extension === 'txt') {
- prefix = 'text/plain';
- } else {
- // 添加更多文件类型的判断
- // 如果不是图片、PDF、文本等类型,可以设定默认的前缀或采取其他处理
- prefix = 'application/octet-stream';
- }
-
- return fileToBase64(filePath).then(res => `data:${prefix}${extension};base64,${res}`)
- }
-
- function getFileExtensionFromDataURL(dataURL : string) : string {
- const commaIndex = dataURL.indexOf(",");
- const mimeType = dataURL.substring(0, commaIndex).replace("data:", "").replace(";base64", "");
- const mimeTypeParts = mimeType.split("/");
- return mimeTypeParts[1];
- }
-
- function getPlatform():Uni {
- // #ifdef MP-WEIXIN
- return wx
- // #endif
- // #ifdef MP-BAIDU
- return swan
- // #endif
- // #ifdef MP-ALIPAY
- return my
- // #endif
- // #ifdef MP-JD
- return jd
- // #endif
- // #ifdef MP-QQ
- return qq
- // #endif
- // #ifdef MP-360
- return qh
- // #endif
- // #ifdef MP-KUAISHOU
- return ks
- // #endif
- // #ifdef MP-LARK||MP-TOUTIAO
- return tt
- // #endif
- // #ifdef MP-DINGTALK
- return dd
- // #endif
- // #ifdef QUICKAPP-WEBVIEW || QUICKAPP-WEBVIEW-UNION || QUICKAPP-WEBVIEW-HUAWEI
- return qa
- // #endif
- return uni
- }
-
- export function dataURLToFile(dataURL : string, filename : NullableString = null) {
-
- return new Promise((resolve, reject) => {
- const name = filename ?? `${Date.now()}.${getFileExtensionFromDataURL(dataURL)}`;
- const commaIndex = dataURL.indexOf(",");
- const base64 = dataURL.substring(commaIndex + 1);
- const platform = getPlatform()
- const filePath = `${platform.env.USER_DATA_PATH}/${name}`;
-
- fs.writeFile({
- filePath,
- data: base64,
- encoding: 'base64',
- success() {
- resolve(filePath)
- },
- fail(err) {
- reject(err)
- }
- })
- })
-
- }
|