diff --git a/src/renderer/components/ImageLocal.vue b/src/renderer/components/ImageLocal.vue
index b959ad97..b03d36a0 100644
--- a/src/renderer/components/ImageLocal.vue
+++ b/src/renderer/components/ImageLocal.vue
@@ -26,6 +26,8 @@ import { ref, onBeforeMount } from 'vue'
import { getFileIconPath } from '@/manage/utils/common'
import { Loading } from '@element-plus/icons-vue'
import fs from 'fs-extra'
+import mime from 'mime-types'
+import path from 'path'
const base64Image = ref('')
const props = defineProps(
@@ -46,11 +48,16 @@ const props = defineProps(
)
const createBase64Image = async () => {
- const base64 = await fs.readFile(props.localPath, 'base64')
- base64Image.value = `data:image/png;base64,${base64}`
+ const filePath = path.normalize(props.localPath)
+ const base64 = await fs.readFile(filePath, 'base64')
+ base64Image.value = `data:${mime.lookup(filePath) || 'image/png'};base64,${base64}`
}
onBeforeMount(async () => {
- await createBase64Image()
+ try {
+ await createBase64Image()
+ } catch (e) {
+ console.log(e)
+ }
})
diff --git a/src/renderer/manage/pages/bucketPage.vue b/src/renderer/manage/pages/bucketPage.vue
index 8061a6df..15d5a83f 100644
--- a/src/renderer/manage/pages/bucketPage.vue
+++ b/src/renderer/manage/pages/bucketPage.vue
@@ -497,7 +497,7 @@ https://www.baidu.com/img/bd_logo1.png"
shadow="hover"
>
+
0) {
@@ -2150,13 +2162,7 @@ async function resetParam (force: boolean = false) {
const res = await getBucketFileList() as IStringKeyMap
if (res.success) {
res.fullList.sort((a: any, b: any) => {
- if (a.isDir && !b.isDir) {
- return -1
- } else if (!a.isDir && b.isDir) {
- return 1
- } else {
- return a.fileName.localeCompare(b.fileName)
- }
+ return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName)
})
currentPageFilesInfo.push(...res.fullList)
const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || ''
@@ -2229,88 +2235,57 @@ watch(currentPageNumber, () => {
const changePage = async (cur: number | undefined, prev: number | undefined) => {
if (!cur || !prev) {
currentPageNumber.value = 1
- } else {
- if (cur > prev) {
- isShowLoadingPage.value = true
- currentPageNumber.value = prev + 1
- currentPageFilesInfo.length = 0
- selectedItems.length = 0
- searchText.value = ''
- urlToUpload.value = ''
- dialogVisible.value = false
- const res = await getBucketFileList() as IStringKeyMap
- isShowLoadingPage.value = false
- if (res.success) {
- res.fullList.sort((a: any) => {
- return a.isDir ? -1 : 1
- })
- currentPageFilesInfo.push(...res.fullList)
- const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || ''
- if (['name', 'time', 'size', 'ext'].includes(sortType as string)) {
- sortFile(sortType)
- }
- if (res.isTruncated) {
- pagingMarkerStack.push(pagingMarker.value)
- pagingMarker.value = res.nextMarker
- } else {
- ElNotification({
- title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
- message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'),
- type: 'success',
- duration: 1000
- })
- }
- } else {
- ElNotification({
- title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
- message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'),
- type: 'error',
- duration: 1000
- })
- }
- } else if (cur < prev) {
- isShowLoadingPage.value = true
- currentPageNumber.value = prev - 1
- currentPageFilesInfo.length = 0
- selectedItems.length = 0
- searchText.value = ''
- urlToUpload.value = ''
- dialogVisible.value = false
- pagingMarker.value = pagingMarkerStack[pagingMarkerStack.length - 2]
- pagingMarkerStack.pop()
- pagingMarkerStack.pop()
- const res = await getBucketFileList() as IStringKeyMap
- isShowLoadingPage.value = false
- if (res.success) {
- res.fullList.sort((a: any) => {
- return a.isDir ? -1 : 1
- })
- currentPageFilesInfo.push(...res.fullList)
- const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || ''
- if (['name', 'time', 'size', 'ext'].includes(sortType as string)) {
- sortFile(sortType)
- }
- if (paging.value) {
- if (res.isTruncated) {
- pagingMarkerStack.push(pagingMarker.value)
- pagingMarker.value = res.nextMarker
- } else {
- ElNotification({
- title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
- message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'),
- type: 'success',
- duration: 1000
- })
- }
- }
- } else {
- ElNotification({
- title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
- message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'),
- type: 'error',
- duration: 1000
- })
- }
+ return
+ }
+ const isForwardNavigation = cur > prev
+ const newPageNumber = isForwardNavigation ? prev + 1 : prev - 1
+ const sortType = localStorage.getItem('sortType') as 'name' | 'size' | 'time' | 'ext' | 'check' | 'init' || ''
+
+ isShowLoadingPage.value = true
+ currentPageNumber.value = newPageNumber
+ currentPageFilesInfo.length = 0
+ selectedItems.length = 0
+ searchText.value = ''
+ urlToUpload.value = ''
+ dialogVisible.value = false
+
+ if (!isForwardNavigation) {
+ pagingMarker.value = pagingMarkerStack[pagingMarkerStack.length - 2]
+ pagingMarkerStack.pop()
+ pagingMarkerStack.pop()
+ }
+
+ const res = await getBucketFileList() as IStringKeyMap
+ isShowLoadingPage.value = false
+
+ if (!res.success) {
+ ElNotification({
+ title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
+ message: $T('MANAGE_BUCKET_GET_LIST_FAIL_MSG'),
+ type: 'error',
+ duration: 1000
+ })
+ return
+ }
+
+ res.fullList.sort((a: any) => (a.isDir ? -1 : 1))
+ currentPageFilesInfo.push(...res.fullList)
+
+ if (['name', 'time', 'size', 'ext'].includes(sortType as string)) {
+ sortFile(sortType)
+ }
+
+ if (!(cur < prev && !paging.value)) {
+ if (res.isTruncated) {
+ pagingMarkerStack.push(pagingMarker.value)
+ pagingMarker.value = res.nextMarker
+ } else {
+ ElNotification({
+ title: $T('MANAGE_BUCKET_GET_LIST_FAIL_TITLE'),
+ message: $T('MANAGE_BUCKET_LAST_PAGE_MSG'),
+ type: 'success',
+ duration: 1000
+ })
}
}
}
@@ -2404,13 +2379,7 @@ function sortFile (type: 'name' | 'size' | 'time' | 'ext' | 'check' | 'init') {
break
case 'init':
currentPageFilesInfo.sort((a: any, b: any) => {
- if (a.isDir && !b.isDir) {
- return -1
- } else if (!a.isDir && b.isDir) {
- return 1
- } else {
- return a.fileName.localeCompare(b.fileName)
- }
+ return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName)
})
}
}
@@ -2879,13 +2848,7 @@ async function getBucketFileListBackStage () {
const interval = setInterval(() => {
const currentFileList = fileTransferStore.getFileTransferList()
currentFileList.sort((a: any, b: any) => {
- if (a.isDir && !b.isDir) {
- return -1
- } else if (!a.isDir && b.isDir) {
- return 1
- } else {
- return a.fileName.localeCompare(b.fileName)
- }
+ return b.isDir - a.isDir || a.fileName.localeCompare(b.fileName)
})
currentPageFilesInfo.length = 0
currentPageFilesInfo.push(...currentFileList)
diff --git a/src/renderer/manage/pages/manageMain.vue b/src/renderer/manage/pages/manageMain.vue
index 85ff66ab..13bcd56b 100644
--- a/src/renderer/manage/pages/manageMain.vue
+++ b/src/renderer/manage/pages/manageMain.vue
@@ -454,7 +454,8 @@ function handleSelectMenu (bucketName: string) {
const transformedConfig = JSON.parse(currentPicBedConfig.transformedConfig ?? '{}')
let prefix = transformedConfig[bucketName]?.baseDir || '/'
- if (currentPicBedConfig.picBedName ?? currentPicBedName.value === 'local') {
+ const cpicBedName = currentPicBedConfig.picBedName ?? currentPicBedName.value
+ if (cpicBedName === 'local') {
prefix = `/${transPathToUnix(prefix)}/`
} else {
prefix = prefix.startsWith('/') ? prefix : `/${prefix}`
@@ -465,7 +466,7 @@ function handleSelectMenu (bucketName: string) {
prefix,
bucketName,
customUrl: transformedConfig[bucketName]?.customUrl ?? '',
- picBedName: currentPicBedConfig.picBedName ?? currentPicBedName.value,
+ picBedName: cpicBedName,
alias: currentAlias.value,
bucketConfig: bucketList.value[bucketName],
cdnUrl: currentPicBedConfig.customUrl,