/
image.js
61 lines (52 loc) · 2.39 KB
/
image.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var express = require('express'),
router = express.Router(),
fs = require('fs'),
path = require('path'),
config = require('../../config/config'),
utils = require('../../utils'),
log = require('./../../config/middlewares/log')(),
_ = require('underscore'),
jwtAuth = require('./../../config/middlewares/jwtauth'),
filetype = require('./../../config/middlewares/filetype'),
multipart = require('connect-multiparty'),
mongoose = require('mongoose'),
Image = mongoose.model('Image');
module.exports = function(app, passport) {
app.use('/api/image', router);
app.use('/i', router);
router.use(log);
router.get('/:id', function(req, res) {
var asJson = req.query.json;
Image.findOne({ _id: req.params.id }, { __v: false, ip: false, createdBy: false }, function(err, obj) {
if (err) return res.makeError(500, err.message, err);
if (!obj) return res.makeError(404, 'Image not found.');
var filePath = config.uploadDir + obj._id;
fs.exists(filePath, function(exists) {
if (!exists) return res.makeError(404, "File not found.");
if (asJson) res.send(_.omit(obj.toObject(), 'id'));
else res.sendFile(filePath);
});
});
});
router.post('/', jwtAuth(passport), multipart({maxFilesSize: config.maxFilesSize}), filetype(config.allowedFileTypes), function(req, res) {
var FILE_UPLOAD_FIELD = "uploadFile";
var tmpPath = req.files[FILE_UPLOAD_FIELD].path;
var newName = utils.generateUUID() + path.parse(tmpPath).ext;
var newPath = config.uploadDir + newName;
fs.rename(tmpPath, newPath, function(err) {
if (err) return res.makeError(500, 'Unable to save file.', err);
var img = new Image({
_id: newName,
created: Date.now(),
ip: req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.ip,
encrypted: req.body.encrypted || false,
type: req.files[FILE_UPLOAD_FIELD].type,
createdBy: req.user._id
});
img.save(function(err, obj) {
if (err) return res.makeError(500, 'Unable to save file.', err);
res.status(201).send(_.omit(img.toObject(), '__v', 'ip', 'id', 'createdBy', 'created'));
});
})
});
};