diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2021-02-23 20:31:19 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2021-02-23 20:31:19 +0100 |
| commit | 464991b62e4fa6141449ca0c5980fcf0af3097a6 (patch) | |
| tree | 18e597dc951cbf4605995e3aa1b1f8761449549f /app/node_modules | |
| parent | 19516de0a43ac5f2b0afc9891bbef09d229ce4e6 (diff) | |
upload files and write to diskv0.3.0
Diffstat (limited to 'app/node_modules')
| -rw-r--r-- | app/node_modules/okservices/oks3/index.js | 11 | ||||
| -rw-r--r-- | app/node_modules/okservices/oks3/upload.js | 78 |
2 files changed, 63 insertions, 26 deletions
diff --git a/app/node_modules/okservices/oks3/index.js b/app/node_modules/okservices/oks3/index.js index 41ee3dc..60567e9 100644 --- a/app/node_modules/okservices/oks3/index.js +++ b/app/node_modules/okservices/oks3/index.js @@ -46,6 +46,7 @@ function OKS3(options) { key: options.s3.key, secret: options.s3.secret, bucket: options.s3.bucket, + local: options.s3.local, }) var express = options.express; @@ -85,7 +86,7 @@ function OKS3(options) { router.post('/audio', mult.single('audio'), function(req, res) { d.run(function () { - if (! options.s3.image.allowed) { + if (! options.s3.audio.allowed) { return res.status(500).json({ error: "Audio uploading not permitted" }) } @@ -113,7 +114,7 @@ function OKS3(options) { router.post('/video', mult.single('video'), function(req, res) { d.run(function () { - if (! options.s3.image.allowed) { + if (! options.s3.video.allowed) { return res.status(500).json({ error: "Video uploading not permitted" }) } @@ -140,7 +141,7 @@ function OKS3(options) { router.post('/file', mult.single('file'), function(req, res) { d.run(function () { - if (! options.s3.image.allowed) { + if (! options.s3.file.allowed) { return res.status(500).json({ error: "File uploading not permitted" }) } @@ -149,6 +150,10 @@ function OKS3(options) { preserveFilename: options.s3.video.preserveFilename, dirname: options.s3.dirname, types: { + 'image/gif': 'gif', + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/png': 'png', 'application/pdf': 'pdf', 'text/plain': 'txt', 'text/html': 'html', diff --git a/app/node_modules/okservices/oks3/upload.js b/app/node_modules/okservices/oks3/upload.js index 681b14b..5d5c635 100644 --- a/app/node_modules/okservices/oks3/upload.js +++ b/app/node_modules/okservices/oks3/upload.js @@ -1,6 +1,8 @@ +var fs = require('fs') var knox = require('knox') var uuid = require('node-uuid') +var crypto = require('crypto') var s3 @@ -15,11 +17,15 @@ var acceptableuploadTypes = { module.exports = {} module.exports.init = function (opt){ - s3 = knox.createClient({ - key: opt.key, - secret: opt.secret, - bucket: opt.bucket, - }) + if (opt.local) { + s3 = { local: opt.local } + } else { + s3 = knox.createClient({ + key: opt.key, + secret: opt.secret, + bucket: opt.bucket, + }) + } } module.exports.put = function (opt) { @@ -28,10 +34,11 @@ module.exports.put = function (opt) { var now = new Date() var file = opt.file + // console.log("Received", file.originalname, file.mimetype) var types = opt.types || acceptableuploadTypes var extension = types[file.mimetype] - + if (opt.filename) { filename = opt.filename } @@ -60,24 +67,49 @@ module.exports.put = function (opt) { opt.acceptable && opt.acceptable(err) // console.log("upload >", remote_path) - s3.putBuffer(file.buffer, remote_path, { - 'Content-Length': file.size, - 'Content-Type': file.mimetype, - 'x-amz-acl': 'public-read' - }, function(err, s3res) { - if (err || s3res.statusCode !== 200) { - console.error(err); - if (s3res && s3res.resume) { - s3res.resume() + if (s3.local) { + var hash = crypto.createHash("sha256").update(filename, "utf8").digest("hex") + var hash_path = hash.substr(0, 2) + fs.mkdir(s3.local.localPath + hash_path, function(error){ + if (error && error.code !== "EEXIST") { + console.error("error creating directory") + console.error(error) + opt.unacceptable && opt.unacceptable(error) + return + } + var localPath = (s3.local.localPath + hash_path + "/" + filename).replace(/\/\//g, "/") + var remotePath = (s3.local.remotePath + hash_path + "/" + filename).replace(/\/\//g, "/") + fs.writeFile(localPath, file.buffer, {}, function(error){ + if (error) { + console.error("error saving file") + console.error(error) + opt.unacceptable && opt.unacceptable(error) + return + } + opt.success && opt.success(remotePath) + }); + }) + } else { + s3.putBuffer(file.buffer, remote_path, { + 'Content-Length': file.size, + 'Content-Type': file.mimetype, + 'x-amz-acl': 'public-read' + }, function(err, s3res) { + if (err || s3res.statusCode !== 200) { + console.error(err); + if (s3res && s3res.resume) { + s3res.resume() + } + return; } - return; - } - var file_url = s3res.url || s3res.req.url + var file_url = s3res.url || s3res.req.url - opt.success && opt.success(file_url) - }).on('error', function(err, s3res){ - console.error(err) - s3res && s3res.resume && s3res.resume() - }) + opt.success && opt.success(file_url) + }).on('error', function(err, s3res){ + console.error(err) + s3res && s3res.resume && s3res.resume() + }) + } } + |
