diff --git a/apps/server/src/providers/filesystem-storage.provider.ts b/apps/server/src/providers/filesystem-storage.provider.ts index 683f4ea..78e7ab1 100644 --- a/apps/server/src/providers/filesystem-storage.provider.ts +++ b/apps/server/src/providers/filesystem-storage.provider.ts @@ -240,7 +240,7 @@ export class FilesystemStorageProvider implements StorageProvider { try { await pipeline(inputStream, encryptStream, writeStream); - await fs.rename(tempPath, filePath); + await this.moveFile(tempPath, filePath); } catch (error) { await this.cleanupTempFile(tempPath); throw error; @@ -707,4 +707,18 @@ export class FilesystemStorageProvider implements StorageProvider { console.error("Error during temp directory cleanup:", error); } } + + private async moveFile(src: string, dest: string): Promise { + try { + await fs.rename(src, dest); + } catch (err: any) { + if (err.code === "EXDEV") { + // cross-device: fallback to copy + delete + await fs.copyFile(src, dest); + await fs.unlink(src); + } else { + throw err; + } + } + } }