1 回答

TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊
我通過從filesDownloadto切換解決了這個問題filesGetTemporaryLink,它返回一個文件鏈接而不是文件本身。然后我觸發(fā)下載此鏈接。
最終結(jié)果:
operationResult = await dbx.filesGetTemporaryLink({
path: `/${CONFIG_STORAGE.uploader.assetsPath}/${fileUUID}`
});
const downloadResult = Object.freeze({
fileLength: operationResult?.metadata.size,
fileLink: operationResult?.link,
fileMIME: mime.lookup(operationResult?.metadata.name),
fileName: operationResult?.metadata.name,
isSucceeded,
message
});
return downloadResult;
然后我將輸出發(fā)送給客戶端:
res.json(downloadResult);
在客戶端,我通過await/ asyncFetch API 調(diào)用獲得它:
const fileResponse = await fetch(``${host}/downloadDocument`, {
body: JSON.stringify({fileUUID: fileName}),
cache: "no-cache",
credentials: "same-origin",
headers: {
"Content-Type": "application/json"
},
method: "POST",
mode: "cors"
});
const fileData = await fileResponse.json();
const aTag = document.createElement("a");
aTag.href = fileData.fileLink;
aTag.download = fileData.fileName;
aTag.click();
因此,服務(wù)器根本不需要處理文件,沒有額外的 CPU、RAM 或流量影響,無論我嘗試下載多大的文件。
添加回答
舉報