diff --git a/backend/server.js b/backend/server.js
index e0b17e4..97fedc3 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -5661,9 +5661,9 @@ app.post('/api/share/:code/list', shareRateLimitMiddleware, async (req, res) =>
shareLimiter.recordSuccess(req.shareRateLimitKey);
}
- // 获取分享者的用户信息
- const ownerPolicyState = enforceDownloadTrafficPolicy(share.user_id, 'share_download_url');
- const shareOwner = ownerPolicyState?.user || UserDB.findById(share.user_id);
+ // 获取分享者的用户信息(查看列表不触发下载流量策略)
+ // 仅在实际下载接口中校验和消耗下载流量,避免“可见性”受配额影响
+ const shareOwner = UserDB.findById(share.user_id);
if (!shareOwner) {
return res.status(404).json({
success: false,
diff --git a/frontend/share.html b/frontend/share.html
index a196c11..839a2e2 100644
--- a/frontend/share.html
+++ b/frontend/share.html
@@ -791,6 +791,11 @@
color: #991b1b;
}
+ body.enterprise-netdisk-share .download-alert {
+ margin-bottom: 12px;
+ animation: fadeInOut 0.2s ease;
+ }
+
body.enterprise-netdisk-share .view-controls {
display: flex;
gap: 8px;
@@ -970,6 +975,17 @@
padding: 16px;
}
}
+
+ @keyframes fadeInOut {
+ from {
+ opacity: 0;
+ transform: translateY(-4px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
@@ -1016,6 +1032,7 @@
+
{{ downloadAlertMessage }}
分享者: {{ shareInfo.username }} |
创建时间: {{ formatDate(shareInfo.created_at) }}
@@ -1111,6 +1128,8 @@
files: [],
loading: true,
errorMessage: '',
+ downloadAlertMessage: '',
+ downloadAlertTimer: null,
viewMode: "grid", // 视图模式: grid 大图标, list 列表(默认大图标)
// 主题
currentTheme: 'dark',
@@ -1176,6 +1195,7 @@
async verifyShare() {
this.errorMessage = '';
+ this.downloadAlertMessage = '';
this.loading = true;
try {
@@ -1288,10 +1308,28 @@
}
} catch (error) {
console.error('[分享下载] 获取下载链接失败:', error);
- this.errorMessage = '获取下载链接失败: ' + (error.response?.data?.message || error.message);
+ const message = error.response?.data?.message || '当前网络繁忙,请稍后再试';
+ this.showDownloadAlert(message);
}
},
+ showDownloadAlert(message) {
+ const safeMessage = typeof message === 'string' && message.trim()
+ ? message.trim()
+ : '当前网络繁忙,请稍后再试';
+
+ this.downloadAlertMessage = safeMessage;
+ if (this.downloadAlertTimer) {
+ clearTimeout(this.downloadAlertTimer);
+ this.downloadAlertTimer = null;
+ }
+
+ this.downloadAlertTimer = setTimeout(() => {
+ this.downloadAlertMessage = '';
+ this.downloadAlertTimer = null;
+ }, 3000);
+ },
+
// 触发下载(使用隐藏的a标签,避免页面闪动)
triggerDownload(url, filename) {
const link = document.createElement('a');
@@ -1430,6 +1468,13 @@
}
this.init();
+ },
+
+ beforeUnmount() {
+ if (this.downloadAlertTimer) {
+ clearTimeout(this.downloadAlertTimer);
+ this.downloadAlertTimer = null;
+ }
}
}).mount('#app');