合同小程序前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

110 lines
2.6 KiB

// @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)
}
})
})
}