mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2026-01-13 20:57:09 +08:00
refactor: 双列布局优化 以及 分片上传功能优化
Co-authored-by: kiki1373639299<zkai0106@163.com> # message auto-generated for no-merge-commit merge: !16 merge upload-fix into dev feat: 双列布局优化 以及 分片上传功能优化 Created-by: kiki1373639299 Commit-by: kiki1373639299 Merged-by: Charles_7c Description: <!-- 非常感谢您的 PR!在提交之前,请务必确保您 PR 的代码经过了完整测试,并且通过了代码规范检查。 --> <!-- 在 [] 中输入 x 来勾选) --> ## PR 类型 <!-- 您的 PR 引入了哪种类型的变更? --> <!-- 只支持选择一种类型,如果有多种类型,可以在更新日志中增加 “类型” 列。 --> - [X] 新 feature - [ ] Bug 修复 - [ ] 功能增强 - [ ] 文档变更 - [ ] 代码样式变更 - [ ] 重构 - [ ] 性能改进 - [ ] 单元测试 - [ ] CI/CD - [ ] 其他 ## PR 目的 <!-- 描述一下您的 PR 解决了什么问题。如果可以,请链接到相关 issues。 --> ## 解决方案 <!-- 详细描述您是如何解决的问题 --> ## PR 测试 <!-- 如果可以,请为您的 PR 添加或更新单元测试。 --> <!-- 请描述一下您是如何测试 PR 的。例如:创建/更新单元测试或添加相关的截图。 --> ## Changelog | 模块 | Changelog | Related issues | |-----|-----------| -------------- | | | | | <!-- 如果有多种类型的变更,可以在变更日志表中增加 “类型” 列,该列的值与上方 “PR 类型” 相同。 --> <!-- Related issues 格式为 Closes #<issue号>,或者 Fixes #<issue号>,或者 Resolves #<issue号>。 --> ## 其他信息 <!-- 请描述一下还有哪些注意事项。例如:如果引入了一个不向下兼容的变更,请描述其影响。 --> ## 提交前确认 - [X] PR 代码经过了完整测试,并且通过了代码规范检查 - [ ] 已经完整填写 Changelog,并链接到了相关 issues - [X] PR 代码将要提交到 dev 分支 See merge request: continew/continew-admin-ui!16
This commit is contained in:
@@ -100,7 +100,7 @@ export function useMultipartUploader(props: {
|
||||
if (typeof Worker !== 'undefined' && !md5Worker) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('[Hooks] 初始化MD5 Worker...')
|
||||
md5Worker = new Worker('/src/utils/md5-worker.ts', { type: 'module' })
|
||||
md5Worker = new Worker(new URL('../../utils/md5-worker.ts', import.meta.url), { type: 'module' })
|
||||
md5Worker.onmessage = function (e) {
|
||||
const { type, taskId, md5, error } = e.data
|
||||
|
||||
@@ -141,9 +141,27 @@ export function useMultipartUploader(props: {
|
||||
totalTime: 0,
|
||||
}
|
||||
|
||||
// 根据文件大小动态调整分块和分片大小
|
||||
const blockSize = file.size > 200 * 1024 * 1024 ? 50 * 1024 * 1024 : 25 * 1024 * 1024 // 50MB或25MB块
|
||||
const chunkSize = file.size > 100 * 1024 * 1024 ? 10 * 1024 * 1024 : 2 * 1024 * 1024 // 10MB或2MB分片
|
||||
// 根据文件大小动态调整分块和分片大小(优化:使用更小的分片以降低内存占用)
|
||||
let blockSize: number
|
||||
let chunkSize: number
|
||||
|
||||
if (file.size > 500 * 1024 * 1024) {
|
||||
// 超大文件(> 500MB)
|
||||
blockSize = 50 * 1024 * 1024 // 50MB块
|
||||
chunkSize = 5 * 1024 * 1024 // 5MB分片
|
||||
} else if (file.size > 100 * 1024 * 1024) {
|
||||
// 大文件(100MB - 500MB)
|
||||
blockSize = 30 * 1024 * 1024 // 30MB块
|
||||
chunkSize = 3 * 1024 * 1024 // 3MB分片
|
||||
} else if (file.size > 10 * 1024 * 1024) {
|
||||
// 中等文件(10MB - 100MB)
|
||||
blockSize = 10 * 1024 * 1024 // 10MB块
|
||||
chunkSize = 1 * 1024 * 1024 // 1MB分片
|
||||
} else {
|
||||
// 小文件(< 10MB)
|
||||
blockSize = 5 * 1024 * 1024 // 5MB块
|
||||
chunkSize = 512 * 1024 // 512KB分片
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`[Hooks] 发送文件到Worker: ${file.name}, 大小: ${(file.size / 1024 / 1024).toFixed(2)}MB, 块大小: ${(blockSize / 1024 / 1024).toFixed(2)}MB, 分片大小: ${(chunkSize / 1024 / 1024).toFixed(2)}MB`)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<OneLevelMenu :menus="oneLevelMenus" @menu-click="handleMenuItemClickByItem"></OneLevelMenu>
|
||||
|
||||
<!-- 左侧二级菜单区域 -->
|
||||
<div class="layout-columns__right-menu" :class="{ collapse: appStore.menuCollapse }">
|
||||
<div v-if="twoLevelMenus.length > 0" class="layout-columns__right-menu" :class="{ collapse: appStore.menuCollapse }">
|
||||
<!-- 系统标题 -->
|
||||
<div class="layout-columns__title">
|
||||
<span v-show="!appStore.menuCollapse" class="system-name gi_line_1">{{ appStore.getTitle() }}</span>
|
||||
|
||||
@@ -111,7 +111,7 @@ function calculateFileMd5Optimized(file: File, taskId: string, blockSize: number
|
||||
const finalSpark = new SparkMD5.ArrayBuffer()
|
||||
blockHashes.forEach((hash) => {
|
||||
const hashBuffer = new TextEncoder().encode(hash)
|
||||
finalSpark.append(hashBuffer)
|
||||
finalSpark.append(hashBuffer.buffer.slice(hashBuffer.byteOffset, hashBuffer.byteOffset + hashBuffer.byteLength))
|
||||
})
|
||||
const finalMd5 = finalSpark.end()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user