Skip to content

Commit

Permalink
Merge pull request #323 from jamebal/dev
Browse files Browse the repository at this point in the history
fix: 修复分享链接里的文件没有使用预览配置打开的问题
  • Loading branch information
jamebal authored Nov 30, 2024
2 parents f286d3b + b36e2b8 commit 495f68f
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 18 deletions.
14 changes: 1 addition & 13 deletions src/components/ShowFile/ShowFile.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4342,7 +4342,7 @@ export default {
this.$emit('selectedFile', selectFile)
return
}
const fileHandler = this.hasIframePreview(row.suffix, this.$store.getters.iframePreviewConfig)
const fileHandler = fileConfig.hasIframePreview(row.suffix, this.$store.getters.iframePreviewConfig)
if (fileHandler !== null) {
// iframe 预览
this.iframePreviewVisible = true
Expand Down Expand Up @@ -4425,18 +4425,6 @@ export default {
}
return this.notPreviewDialogVisible;
},
hasIframePreview(suffix, fileHandlers) {
// 将 suffix 转换为小写
const lowerCaseSuffix = suffix.toLowerCase();
for (let key in fileHandlers) {
// 将 key 中的扩展名全部转换为小写
const extensions = key.split(',').map(extension => extension.toLowerCase());
if (extensions.includes(lowerCaseSuffix)) {
return fileHandlers[key];
}
}
return null;
},
determineDownload(file) {
this.download(file)
this.notPreviewDialogVisible = false
Expand Down
18 changes: 18 additions & 0 deletions src/utils/file-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,22 @@ export default {
const queryShareToken = shareToken ? `?share-token=${shareToken}` : ''
return window.location.origin + `${this.baseUrl}/public/s/${fileId}/packageDownload/${downloadName}${queryShareToken}`
},
/**
* 判断是否有iframe预览
* @param suffix 文件后缀
* @param fileHandlers 文件处理器
* @returns {*|null} 文件处理器
*/
hasIframePreview: function(suffix, fileHandlers) {
// 将 suffix 转换为小写
const lowerCaseSuffix = suffix.toLowerCase();
for (let key in fileHandlers) {
// 将 key 中的扩展名全部转换为小写
const extensions = key.split(',').map(extension => extension.toLowerCase());
if (extensions.includes(lowerCaseSuffix)) {
return fileHandlers[key];
}
}
return null;
},
}
30 changes: 25 additions & 5 deletions src/views/public/share/shareList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,13 @@
<image-viewer :fileList="fileList" :shareId="shareId" :file="imagePreviewRow"
:status.sync="imagePreviewVisible"></image-viewer>
<video-preview :file="videoPreviewRow" :shareId="shareId" :status.sync="videoPreviewVisible"></video-preview>
<iframe-preview :file="officePreviewRow" :shareId="shareId" :sharer="sharerUsername" :status.sync="officePreviewVisible"></iframe-preview>
<iframe-preview
:file="iframePreviewRow"
:fileHandler="fileHandler"
:shareId="shareId"
:sharer="sharerUsername"
:status.sync="iframePreviewVisible"
></iframe-preview>
<el-divider v-if="!linkFailed && !showShareCode" class="grid-divider" content-position="center"><i
class="el-icon-folder-opened"></i>&nbsp;{{ summaries }}
</el-divider>
Expand Down Expand Up @@ -419,8 +425,9 @@ export default {
imagePreviewVisible: false,
videoPreviewRow: {},
videoPreviewVisible: false,
officePreviewRow: {},
officePreviewVisible: false,
iframePreviewRow: {},
iframePreviewVisible: false,
fileHandler: {},
audioPreviewRow: {},
audioPreviewVisible: false,
showUpdateDateItem: this.$pc,// 列表模式下是否显示修改时间
Expand All @@ -431,6 +438,7 @@ export default {
sharerAvatarUrl: '',
netdiskName: 'JmalCloud',
netdiskLogo: '',
iframePreviewConfig: '',
showShareCode: false,
shareData: {},
extractionCode: '',
Expand Down Expand Up @@ -707,6 +715,9 @@ export default {
if (this.sharer.netdiskName) {
this.netdiskName = this.sharer.netdiskName
}
if (this.sharer.iframe) {
this.iframePreviewConfig = JSON.parse(this.sharer.iframe)
}
this.sharerUsername = this.sharer.username
if (this.sharer.netdiskLogo) {
this.netdiskLogo = this.sharer.netdiskLogo
Expand Down Expand Up @@ -1074,6 +1085,15 @@ export default {
this.pushRouter()
this.accessShareOpenDir(row.id)
} else {
const fileHandler = fileConfig.hasIframePreview(row.suffix, this.iframePreviewConfig)
console.log(fileHandler, this.iframePreviewConfig)
if (fileHandler !== null) {
// iframe 预览
this.iframePreviewVisible = true
this.iframePreviewRow = row
this.fileHandler = fileHandler
return
}
if (row.contentType.startsWith('image')) {
// 图片
this.imagePreviewVisible = true
Expand All @@ -1100,8 +1120,8 @@ export default {
// office文件
if (row.contentType.indexOf('office') > -1 || suffix.iframePreviewFile.includes(row.suffix)) {
// office文件
this.officePreviewVisible = true
this.officePreviewRow = row
this.iframePreviewVisible = true
this.iframePreviewRow = row
return
}
// 打开文件
Expand Down

0 comments on commit 495f68f

Please sign in to comment.