This commit is contained in:
wuweihua
2026-10-22 14:46:57 +08:00
7 changed files with 100 additions and 13 deletions
@@ -29,7 +29,7 @@
<!-- 文件列表 -->
<transition-group ref="uploadFileList" class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
<el-link :href="`${baseUrl}${file.url}`" underline="never" target="_blank">
<el-link :href="resolveFileHref(file.url)" underline="never" target="_blank">
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link>
<div class="ele-upload-list__item-content-action">
@@ -200,6 +200,14 @@ function getFileName(name) {
}
}
// oss:// 存储的文件经后端鉴权接口转发下载,本地路径保持原样
function resolveFileHref(url) {
if (url && url.indexOf("oss://") === 0) {
return `${baseUrl}/common/download/resource?resource=` + encodeURIComponent(url)
}
return `${baseUrl}${url}`
}
// 对象转成指定字符串分隔
function listToString(list, separator) {
let strs = ""
+16 -3
View File
@@ -116,7 +116,10 @@ watch(() => props.modelValue, val => {
// 然后将数组转为对象数组
fileList.value = list.map(item => {
if (typeof item === "string") {
if (item.indexOf(baseUrl) === -1 && !isExternal(item)) {
if (item.indexOf("oss://") === 0) {
// oss:// 存储标识:经后端鉴权接口转发预览,原值保留在 name 供回传
item = { name: item, url: ossResourceUrl(item), oss: true }
} else if (item.indexOf(baseUrl) === -1 && !isExternal(item)) {
item = { name: baseUrl + item, url: baseUrl + item }
} else {
item = { name: item, url: item }
@@ -173,7 +176,11 @@ function handleExceed() {
// 上传成功回调
function handleUploadSuccess(res, file) {
if (res.code === 200) {
uploadList.value.push({ name: res.fileName, url: res.fileName })
if (res.fileName && res.fileName.indexOf("oss://") === 0) {
uploadList.value.push({ name: res.fileName, url: ossResourceUrl(res.fileName), oss: true })
} else {
uploadList.value.push({ name: res.fileName, url: res.fileName })
}
uploadedSuccessfully()
} else {
number.value--
@@ -217,13 +224,19 @@ function handlePictureCardPreview(file) {
dialogVisible.value = true
}
// oss:// 存储的图片经后端鉴权接口转发预览/下载
function ossResourceUrl(key) {
return baseUrl + "/common/download/resource?resource=" + encodeURIComponent(key)
}
// 对象转成指定字符串分隔
function listToString(list, separator) {
let strs = ""
separator = separator || ","
for (let i in list) {
if (undefined !== list[i].url && list[i].url.indexOf("blob:") !== 0) {
strs += list[i].url.replace(baseUrl, "") + separator
// oss:// 项回传原始存储标识,其余去掉 baseUrl 前缀
strs += (list[i].oss ? list[i].name : list[i].url.replace(baseUrl, "")) + separator
}
}
return strs != "" ? strs.substr(0, strs.length - 1) : ""