Browse Source

Работа над загрузкой файлов на сервер

Book Pauk 6 years ago
parent
commit
fb852b5dcb
2 changed files with 16 additions and 9 deletions
  1. 1 1
      server/controllers/ReaderController.js
  2. 15 8
      server/core/ReaderWorker.js

+ 1 - 1
server/controllers/ReaderController.js

@@ -32,7 +32,7 @@ class ReaderController extends BaseController {
         let error = '';
         try {
             const url = await this.readerWorker.saveFile(file);
-            return ({url});
+            return {url};
         } catch (e) {
             error = e.message;
         }

+ 15 - 8
server/core/ReaderWorker.js

@@ -27,6 +27,7 @@ class ReaderWorker {
         let errMes = '';
         let decompDir = '';
         let downloadedFilename = '';
+        let isUploaded = false;
         let convertFilename = '';
         try {
             wState.set({state: 'download', step: 1, totalSteps: 3, url});
@@ -35,13 +36,19 @@ class ReaderWorker {
             const tempFilename2 = utils.randomHexString(30);
             const decompDirname = utils.randomHexString(30);
 
-            //download
-            const downdata = await this.down.load(url, (progress) => {
-                wState.set({progress});
-            });
-
-            downloadedFilename = `${this.config.tempDownloadDir}/${tempFilename}`;
-            await fs.writeFile(downloadedFilename, downdata);
+            if (url.indexOf('file://') != 0) {//download
+                const downdata = await this.down.load(url, (progress) => {
+                    wState.set({progress});
+                });
+
+                downloadedFilename = `${this.config.tempDownloadDir}/${tempFilename}`;
+                await fs.writeFile(downloadedFilename, downdata);
+            } else {//uploaded file
+                downloadedFilename = `${this.config.uploadDir}/${url.substr(7)}`;
+                if (!await fs.pathExists(downloadedFilename)) 
+                    throw new Error('Файл не найден на сервере (возможно был удален как устаревший). Пожалуйста, загрузите файл с диска на сервер заново.');
+                isUploaded = true;
+            }
             wState.set({progress: 100});
 
             //decompress
@@ -73,7 +80,7 @@ class ReaderWorker {
             //clean
             if (decompDir)
                 await fs.remove(decompDir);
-            if (downloadedFilename)
+            if (downloadedFilename && !isUploaded)
                 await fs.remove(downloadedFilename);
             if (convertFilename)
                 await fs.remove(convertFilename);