diff --git a/server/controllers/WebSocketController.js b/server/controllers/WebSocketController.js index 23de1b7b..add0a3a8 100644 --- a/server/controllers/WebSocketController.js +++ b/server/controllers/WebSocketController.js @@ -76,6 +76,8 @@ class WebSocketController { await this.readerStorageDo(req, ws); break; case 'upload-file-buf': await this.uploadFileBuf(req, ws); break; + case 'upload-file-touch': + await this.uploadFileTouch(req, ws); break; default: throw new Error(`Action not found: ${req.action}`); @@ -182,7 +184,12 @@ class WebSocketController { this.send({url: await this.readerWorker.saveFileBuf(req.buf)}, req, ws); } - + async uploadFileTouch(req, ws) { + if (!req.url) + throw new Error(`key 'url' is empty`); + + this.send({url: await this.readerWorker.uploadFileTouch(req.url)}, req, ws); + } } module.exports = WebSocketController; diff --git a/server/core/Reader/ReaderWorker.js b/server/core/Reader/ReaderWorker.js index 3347d8cd..70a6530d 100644 --- a/server/core/Reader/ReaderWorker.js +++ b/server/core/Reader/ReaderWorker.js @@ -232,6 +232,14 @@ class ReaderWorker { return `disk://${hash}`; } + async uploadFileTouch(url) { + const outFilename = `${this.config.uploadDir}/${url.replace('disk://', '')}`; + + await utils.touchFile(outFilename); + + return url; + } + async restoreRemoteFile(filename) { const basename = path.basename(filename); const targetName = `${this.config.tempPublicDir}/${basename}`;