From fb852b5dcbcea7d7e6a534d51b6026cae73fe969 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 4 Feb 2019 20:37:32 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/ReaderController.js | 2 +- server/core/ReaderWorker.js | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/server/controllers/ReaderController.js b/server/controllers/ReaderController.js index ae92f3a2..deea1591 100644 --- a/server/controllers/ReaderController.js +++ b/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; } diff --git a/server/core/ReaderWorker.js b/server/core/ReaderWorker.js index 781fa3a0..dc2b8d47 100644 --- a/server/core/ReaderWorker.js +++ b/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}); - }); + 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); + 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);