2026-04-11 00:38:52 +08:00

69 lines
1.6 KiB
TypeScript

import { requestClient } from '#/api/request';
export const OSS_FILE_BUCKETS = {
apk: 'apk',
avatar: 'avatar',
back: 'back',
feedback: 'feedback',
other: 'other',
startPage: 'start_page',
svgaCover: 'svga_cover',
svgasource: 'svgasource',
} as const;
const OSS_URL = import.meta.env.VITE_GLOB_OSS_URL || '';
export function randomFilename(filename?: string) {
const suffix = filename ? filename.slice(filename.lastIndexOf('.')) : '';
const uuid =
typeof crypto !== 'undefined' && crypto.randomUUID
? crypto.randomUUID()
: `${Date.now()}-${Math.random().toString(16).slice(2)}`;
return `manager-${uuid}${suffix}`;
}
export const radmonFilename = randomFilename;
export function getAccessImgUrl(key?: string) {
if (!key) {
return '';
}
if (/^https?:\/\//.test(key)) {
return key;
}
if (key.startsWith('/')) {
return `${OSS_URL}${key}`;
}
return `${OSS_URL}/${key}`;
}
export async function getOssSts() {
return requestClient.get<Record<string, string>>('/ali-yun/oss/sts');
}
export async function simpleUploadFile(
file: File,
dir: string = OSS_FILE_BUCKETS.other,
customFilename?: string,
) {
const filename = customFilename || randomFilename(file.name);
const formData = new FormData();
formData.append('file', file, filename);
const result = await requestClient.post<Record<string, string>>(
'/ali-yun/oss/upload',
formData,
{
headers: {
'Content-Type': 'multipart/form-data',
},
params: {
dir,
filename,
},
},
);
return {
name: result?.name || '',
};
}