mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-18 21:10:57 +08:00
91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
/**
|
|
* 文件上传配置
|
|
*/
|
|
|
|
export const UPLOAD_CONFIG = {
|
|
// 视频文件配置
|
|
VIDEO: {
|
|
// 文件大小限制 (字节)
|
|
MAX_SIZE: 20 * 1024 * 1024,
|
|
|
|
// 支持的输入格式
|
|
SUPPORTED_FORMATS: ['mp4', 'webm', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'm4v', 'ogv'],
|
|
},
|
|
|
|
// 图片文件配置
|
|
IMAGE: {
|
|
MAX_SIZE: 5 * 1024 * 1024, // 5MB
|
|
TARGET_SIZE: 5 * 1024 * 1024, // 5MB
|
|
SUPPORTED_FORMATS: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],
|
|
},
|
|
|
|
// 音频文件配置
|
|
AUDIO: {
|
|
MAX_SIZE: 5 * 1024 * 1024, // 5MB
|
|
TARGET_SIZE: 5 * 1024 * 1024, // 5MB
|
|
SUPPORTED_FORMATS: ['mp3', 'wav', 'ogg', 'aac', 'm4a'],
|
|
},
|
|
|
|
// 通用文件配置
|
|
GENERAL: {
|
|
MAX_SIZE: 100 * 1024 * 1024, // 100MB
|
|
CHUNK_SIZE: 5 * 1024 * 1024, // 5MB 分片大小
|
|
},
|
|
|
|
// 用户体验配置
|
|
UI: {
|
|
SUCCESS_DURATION: 2000,
|
|
ERROR_DURATION: 3000,
|
|
WARNING_DURATION: 3000,
|
|
},
|
|
}
|
|
|
|
/**
|
|
* 获取文件类型配置
|
|
*/
|
|
export function getFileTypeConfig(filename) {
|
|
const ext = filename.split('.').pop().toLowerCase()
|
|
|
|
if (UPLOAD_CONFIG.VIDEO.SUPPORTED_FORMATS.includes(ext)) {
|
|
return { type: 'video', config: UPLOAD_CONFIG.VIDEO }
|
|
}
|
|
|
|
if (UPLOAD_CONFIG.IMAGE.SUPPORTED_FORMATS.includes(ext)) {
|
|
return { type: 'image', config: UPLOAD_CONFIG.IMAGE }
|
|
}
|
|
|
|
if (UPLOAD_CONFIG.AUDIO.SUPPORTED_FORMATS.includes(ext)) {
|
|
return { type: 'audio', config: UPLOAD_CONFIG.AUDIO }
|
|
}
|
|
|
|
return { type: 'general', config: UPLOAD_CONFIG.GENERAL }
|
|
}
|
|
|
|
/**
|
|
* 格式化文件大小
|
|
*/
|
|
export function formatFileSize(bytes) {
|
|
if (bytes === 0) return '0 B'
|
|
const k = 1024
|
|
const sizes = ['B', 'KB', 'MB', 'GB']
|
|
const i = Math.floor(Math.log(bytes) / Math.log(k))
|
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i]
|
|
}
|
|
|
|
/**
|
|
* 计算压缩节省的费用 (示例函数)
|
|
*/
|
|
export function calculateSavings(originalSize, compressedSize, costPerMB = 0.01) {
|
|
const originalMB = originalSize / (1024 * 1024)
|
|
const compressedMB = compressedSize / (1024 * 1024)
|
|
const savedMB = originalMB - compressedMB
|
|
const savedCost = savedMB * costPerMB
|
|
|
|
return {
|
|
savedMB: savedMB.toFixed(2),
|
|
savedCost: savedCost.toFixed(4),
|
|
originalCost: (originalMB * costPerMB).toFixed(4),
|
|
compressedCost: (compressedMB * costPerMB).toFixed(4),
|
|
}
|
|
}
|