初始化 ui.
This commit is contained in:
134
orion-ops-ui/src/utils/file.ts
Normal file
134
orion-ops-ui/src/utils/file.ts
Normal file
@@ -0,0 +1,134 @@
|
||||
import { isEmptyStr } from '@/utils/index';
|
||||
|
||||
/**
|
||||
* 获取 base64 实际数据
|
||||
*/
|
||||
export function getBase64Data(e: string) {
|
||||
return e.substring(e.indexOf(',') + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取文件 base64 返回 promise
|
||||
*/
|
||||
export function readFileBase64(e: any) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.readAsDataURL(e);
|
||||
reader.onload = res => {
|
||||
resolve(res.target?.result);
|
||||
};
|
||||
reader.onerror = err => {
|
||||
reject(err);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析路径类型
|
||||
*/
|
||||
type PathAnalysis = {
|
||||
name: string;
|
||||
path: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取解析路径
|
||||
*/
|
||||
export function getPathAnalysis(analysisPath: string, paths: PathAnalysis[] = []): PathAnalysis[] {
|
||||
const lastSymbol = analysisPath.lastIndexOf('/');
|
||||
if (lastSymbol === -1) {
|
||||
paths.unshift({
|
||||
name: '/',
|
||||
path: '/'
|
||||
});
|
||||
return paths;
|
||||
}
|
||||
const name = analysisPath.substring(lastSymbol, analysisPath.length);
|
||||
if (!isEmptyStr(name) && name !== '/') {
|
||||
paths.unshift({
|
||||
name: name.substring(1, name.length),
|
||||
path: analysisPath
|
||||
});
|
||||
}
|
||||
return getPathAnalysis(analysisPath.substring(0, lastSymbol), paths);
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换路径
|
||||
*/
|
||||
export function getPath(path: string) {
|
||||
return path.replace(new RegExp('\\\\+', 'g'), '/')
|
||||
.replace(new RegExp('/+', 'g'), '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取父级路径
|
||||
*/
|
||||
export function getParentPath(path: string) {
|
||||
const paths = getPath(path).split('/');
|
||||
const len = paths.length;
|
||||
if (len <= 2) {
|
||||
return '/';
|
||||
}
|
||||
let parent = '';
|
||||
for (let i = 0; i < len - 1; i++) {
|
||||
parent += paths[i];
|
||||
if (i !== len - 2) {
|
||||
parent += '/';
|
||||
}
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
*/
|
||||
export function downloadFile(res: any, fileName: string) {
|
||||
const blob = new Blob([res.data]);
|
||||
const tempLink = document.createElement('a');
|
||||
const blobURL = window.URL.createObjectURL(blob);
|
||||
tempLink.style.display = 'none';
|
||||
tempLink.href = blobURL;
|
||||
if (!fileName) {
|
||||
fileName = res.headers['content-disposition']
|
||||
? res.headers['content-disposition'].split(';')[1].split('=')[1]
|
||||
: new Date().getTime();
|
||||
}
|
||||
tempLink.download = decodeURIComponent(fileName);
|
||||
if (typeof tempLink.download === 'undefined') {
|
||||
tempLink.target = '_blank';
|
||||
}
|
||||
document.body.appendChild(tempLink);
|
||||
tempLink.click();
|
||||
document.body.removeChild(tempLink);
|
||||
window.URL.revokeObjectURL(blobURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* 10进制权限 转 字符串权限
|
||||
*/
|
||||
export function permission10toString(permission: number) {
|
||||
const ps = (permission + '');
|
||||
let res = '';
|
||||
for (let i = 0; i < ps.length; i++) {
|
||||
const per = ps.charAt(i) as any;
|
||||
if ((per & 4) === 0) {
|
||||
res += '-';
|
||||
} else {
|
||||
res += 'r';
|
||||
}
|
||||
if ((per & 2) === 0) {
|
||||
res += '-';
|
||||
} else {
|
||||
res += 'w';
|
||||
}
|
||||
if ((per & 1) === 0) {
|
||||
res += '-';
|
||||
} else {
|
||||
res += 'x';
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
export default null;
|
||||
Reference in New Issue
Block a user