fix: SFTP download/upload use finish event to ensure data written

This commit is contained in:
Ethanfly 2025-12-29 15:06:18 +08:00
parent f6511010bd
commit 2915b2c689

View File

@ -152,17 +152,21 @@ class SFTPService {
}); });
readStream.on('error', (err) => { readStream.on('error', (err) => {
writeStream.destroy();
conn.end(); conn.end();
fs.unlink(localPath, () => {}); fs.unlink(localPath, () => {});
reject(err); reject(err);
}); });
writeStream.on('error', (err) => { writeStream.on('error', (err) => {
readStream.destroy();
conn.end(); conn.end();
fs.unlink(localPath, () => {});
reject(err); reject(err);
}); });
writeStream.on('close', () => { // 使用 'finish' 事件确保数据完全写入磁盘
writeStream.on('finish', () => {
conn.end(); conn.end();
resolve({ success: true, localPath }); resolve({ success: true, localPath });
}); });
@ -209,16 +213,19 @@ class SFTPService {
}); });
readStream.on('error', (err) => { readStream.on('error', (err) => {
writeStream.destroy();
conn.end(); conn.end();
reject(err); reject(err);
}); });
writeStream.on('error', (err) => { writeStream.on('error', (err) => {
readStream.destroy();
conn.end(); conn.end();
reject(err); reject(err);
}); });
writeStream.on('close', () => { // 使用 'finish' 事件确保数据完全写入
writeStream.on('finish', () => {
conn.end(); conn.end();
resolve({ success: true, remotePath }); resolve({ success: true, remotePath });
}); });