From edc28199655499b024c99490f570d8d88712da14 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 4 Feb 2019 20:21:10 +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=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 2 +- server/core/ReaderWorker.js | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 585e027e..37913ef1 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -660,7 +660,7 @@ class Reader extends Vue { progress.setState(state); }); - this.loadBook(url); + this.loadBook({url}); progress.hide(); this.progressActive = false; } catch (e) { diff --git a/server/core/ReaderWorker.js b/server/core/ReaderWorker.js index b90c64ed..781fa3a0 100644 --- a/server/core/ReaderWorker.js +++ b/server/core/ReaderWorker.js @@ -1,5 +1,6 @@ const fs = require('fs-extra'); const path = require('path'); +const crypto = require('crypto'); const workerState = require('./workerState'); const FileDownloader = require('./FileDownloader'); @@ -90,7 +91,20 @@ class ReaderWorker { } async saveFile(file) { - return `file://${file.filename}`; + const buf = await fs.readFile(file.path); + + const hash = crypto.createHash('sha256').update(buf).digest('hex'); + + const outFilename = `${this.config.uploadDir}/${hash}`; + + if (!await fs.pathExists(outFilename)) { + await fs.move(file.path, outFilename); + } else { + await fs.utimes(outFilename, Date.now()/1000, Date.now()/1000); + await fs.remove(file.path); + } + + return `file://${hash}`; } }