diff --git a/admin/src/api/admin.js b/admin/src/api/admin.js index 7421be3..b8eb39b 100644 --- a/admin/src/api/admin.js +++ b/admin/src/api/admin.js @@ -78,6 +78,7 @@ export const uploadSiteAsset = (siteId, file, opts = {}) => { form.append('file', file) if (opts.folder != null) form.append('folder', opts.folder) form.append('downloadable', opts.downloadable ? 'true' : 'false') + if (opts.preserveFilename) form.append('preserve_filename', 'true') return request.post(`/admin/sites/${siteId}/assets`, form, { headers: { 'Content-Type': 'multipart/form-data' } }) } export const createSiteFolder = (siteId, path) => request.post(`/admin/sites/${siteId}/folders`, { path }) diff --git a/admin/src/views/files/FileManage.vue b/admin/src/views/files/FileManage.vue index 1c24d06..ebaecfd 100644 --- a/admin/src/views/files/FileManage.vue +++ b/admin/src/views/files/FileManage.vue @@ -56,11 +56,15 @@ - - + + {{ currentPath || '根目录' }} + + + 开启后覆盖同路径同名文件;首页「产品视频」须上传到 promotion/视频发布/… 并开启此项 + @@ -100,7 +104,8 @@ const loading = ref(false) const currentPath = ref('') const uploading = ref(false) const uploadDialogVisible = ref(false) -const uploadDownloadable = ref(true) +const uploadDownloadable = ref(false) +const uploadPreserveFilename = ref(false) const pendingFile = ref(null) const showNewFolder = ref(false) const newFolderName = ref('') @@ -152,7 +157,9 @@ watch([siteId, currentPath], fetchList) const beforeUpload = (file) => { pendingFile.value = file - uploadDownloadable.value = true + const p = (currentPath.value || '').replace(/^\//, '') + uploadPreserveFilename.value = p.startsWith('promotion/') + uploadDownloadable.value = !uploadPreserveFilename.value uploadDialogVisible.value = true return false } @@ -163,7 +170,8 @@ const doUpload = async () => { try { await uploadSiteAsset(siteId.value, pendingFile.value, { folder: currentPath.value || undefined, - downloadable: uploadDownloadable.value + downloadable: uploadDownloadable.value, + preserveFilename: uploadPreserveFilename.value }) ElMessage.success('上传成功') uploadDialogVisible.value = false @@ -216,6 +224,8 @@ onMounted(() => fetchSites().then(() => fetchList()))