feat(remote): 实现文件下载真实进度显示

- 下载改用流式读取,计算真实进度百分比
- 通过 IPC 事件实时推送进度到前端
- 支持 Content-Length 计算下载进度
This commit is contained in:
2026-03-10 14:59:11 +08:00
parent 40f99f0c49
commit 433db24688
8 changed files with 100 additions and 21 deletions

View File

@@ -119,13 +119,31 @@ export const downloadFileFromRemote = async (
password?: string,
onProgress?: (progress: number) => void
): Promise<void> => {
onProgress?.(50)
const result = await window.electronAPI.remoteDownloadFile(serverHost, port, fileName, remotePath, localPath, password)
onProgress?.(100)
if (!result.success) {
if (result.canceled) {
return
const transferId = Date.now().toString()
const cleanup = window.electronAPI?.onDownloadProgress?.((data) => {
if (data.id === transferId) {
onProgress?.(data.progress)
}
throw new Error(result.error || 'Download failed')
})
try {
const result = await window.electronAPI.remoteDownloadFile(
transferId,
serverHost,
port,
fileName,
remotePath,
localPath,
password
)
if (!result.success) {
if (result.canceled) {
return
}
throw new Error(result.error || 'Download failed')
}
} finally {
cleanup?.()
}
}