diff options
| author | Julie Lala <jules@okfoc.us> | 2014-06-09 07:48:34 -0400 |
|---|---|---|
| committer | Julie Lala <jules@okfoc.us> | 2014-06-09 07:48:34 -0400 |
| commit | e8ba718205d41e75923264ef945178030b662c93 (patch) | |
| tree | 97bff0c0ec0a2bd2b6efb7d5ddbb1ff60c102529 /server/lib/upload.js | |
| parent | d385f80d0942494410432f11d3f3ca0f05d9e4a9 (diff) | |
populate edit profile form
Diffstat (limited to 'server/lib/upload.js')
| -rw-r--r-- | server/lib/upload.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/server/lib/upload.js b/server/lib/upload.js new file mode 100644 index 0000000..5c130a2 --- /dev/null +++ b/server/lib/upload.js @@ -0,0 +1,72 @@ + +var config = require('../../config.json'), + util = require('./util'), + knox = require('knox'), + moment = require('moment'); + +var s3 = module.exports.s3 = knox.createClient({ + key: process.env.OKFOCUS_S3_KEY, + secret: process.env.OKFOCUS_S3_SECRET, + bucket: 'vvalls' +}); + +var acceptableuploadTypes = { + 'image/gif': 'gif', + 'image/jpeg': 'jpg', + 'image/png': 'png' +} + +module.exports.put = function (key, image, opt) { + var imageSize, imageType, filename + var err + var now = new Date() + + var ts = moment().format('YYYYMMDD') + + var extension = acceptableuploadTypes[image.type] + filename = (+now) + "-" + + image.name.replace(/\..*$/,"") + .replace(/[^0-9a-zA-Z]+/g,"-") + .substr(-64) + + "." + extension; + + var remote_path = "/images/" + key + "/" + ts + "/" + filename + + if (! extension) { + err = "unacceptable filetype" + } + else if (image.size < 10) { + err = "file too small" + } + else if (image.size > 2097152) { // 2mb limit + err = "file too large" + } + + if (err) { + console.error(">>>", err) + opt.unacceptable && opt.unacceptable(err) + return + } + + opt.acceptable && opt.acceptable(err) + + console.log("upload > ", remote_path) + s3.putFile(image.path, remote_path, { + 'Content-Length': image.size, + 'Content-Type': image.type, + 'x-amz-acl': 'public-read' + }, function(err, s3res) { + if (err || s3res.statusCode !== 200) { + console.error(err); + s3res.resume() + return; + } + + var image_url = s3res.url || s3res.req.url + + opt.success && opt.success(image_url) + }).on('error', function(err, s3res){ + console.error(err) + s3res && s3res.resume && s3res.resume() + }) +} |
