From 8262cfdcae5526100826842c68d569956498b9db Mon Sep 17 00:00:00 2001 From: Ulrich Schmidt Date: Sun, 25 May 2014 15:14:52 +0200 Subject: [PATCH] amazon to store images --- .gitignore | 1 + helper.js | 16 ++++++++++++++++ package.json | 3 ++- routes/gadgets.js | 35 ++++++++++++++++++++++++++++------- views/gadgets/detail.jade | 2 +- views/gadgets/edit.jade | 2 +- views/gadgets/list.jade | 2 +- views/index.jade | 2 +- 8 files changed, 51 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index efcd73e..859ffd4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ logs .DS_Store github.json +aws.json uploads # Runtime data diff --git a/helper.js b/helper.js index b675661..8b59a1c 100644 --- a/helper.js +++ b/helper.js @@ -1,4 +1,5 @@ var github = {}; +var aws = {}; try { github = require('./github.json'); @@ -9,12 +10,26 @@ try { } } + +try { + aws = require('./aws.json'); +} catch (e) { + aws = { + "ID" : "", + "Secret" : "" + } +} + var config = { "github" : { "GITHUB_CLIENT_ID" : process.env.GITHUB_CLIENT_ID ? process.env.GITHUB_CLIENT_ID : github.GITHUB_CLIENT_ID, "GITHUB_CLIENT_SECRET" : process.env.GITHUB_CLIENT_SECRET ? process.env.GITHUB_CLIENT_SECRET : github.GITHUB_CLIENT_SECRET, "callbackURL" : process.env.callbackURL ? process.env.callbackURL : "http://localhost:3000/users/auth/github/callback" }, + "aws" : { + "ID" : process.env.AWS_ID ? process.env.AWS_ID : aws.ID, + "Secret" : process.env.AWS_Secret ? process.env.AWS_Secret : aws.Secret + }, "mongourl" : process.env.mongodburl ? process.env.mongodburl : "mongodb://localhost:27017/odlthek" } @@ -98,6 +113,7 @@ var checkGadgetBooking = function(_gid,_start,_end,_callback) { var helper = { github : config.github, + aws : config.aws, db : db, ensureAuthenticated : ensureAuthenticated, ensureAdmin : ensureAdmin, diff --git a/package.json b/package.json index 62dd7ba..9f8d4d1 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "passport": "~0.2.0", "passport-github": "*", "express-session":"~1.2.0", - "multer":"~0.0.7" + "multer":"~0.0.7", + "knox": "*" } } diff --git a/routes/gadgets.js b/routes/gadgets.js index 8359c0d..129f3f2 100644 --- a/routes/gadgets.js +++ b/routes/gadgets.js @@ -4,6 +4,8 @@ var gadgets = helper.db.collection('gadgets'); var bookings = helper.db.collection('bookings'); var users = helper.db.collection('users'); +var knox = require('knox'); + var router = express.Router(); @@ -134,13 +136,32 @@ router.get('/:id/edit',helper.ensureAuthenticated, helper.ensureAdmin, function( -router.post('/:id/upload', helper.ensureAuthenticated, helper.ensureAdmin, function(req, res) { - gadgets.findById(req.params.id,function(_err,_gadget){ - _gadget.image = req.files.image.path.replace(/public\//,''); - gadgets.save(_gadget,function(_err,_result){ - res.render('gadgets/edit', { title: _gadget.name , gadget : _gadget}); - }) - }) +router.post('/:id/upload', function(req, res) { + var s3 = knox.createClient({ + key: helper.aws.ID, + secret: helper.aws.Secret, + bucket: "odlthek2" + }); + + + var s3Headers = { + 'Content-Type': req.files.image.mimetype, + + 'Content-Length': req.files.image.size, + 'x-amz-acl': 'public-read' + }; + + console.log(s3,s3Headers,req.files.image); + + s3.putFile("./"+req.files.image.path, req.files.image.name, s3Headers, function(err, s3response){ + gadgets.findById(req.params.id,function(_err,_gadget){ + _gadget.image = s3response.req.url; + gadgets.save(_gadget,function(_err,_result){ + res.render('gadgets/edit', { title: _gadget.name , gadget : _gadget}); + }) + }) + }); + }); diff --git a/views/gadgets/detail.jade b/views/gadgets/detail.jade index ce35cc0..971e5af 100644 --- a/views/gadgets/detail.jade +++ b/views/gadgets/detail.jade @@ -13,7 +13,7 @@ block content h1= gadget.model .image if(gadget.image) - img(src="../"+gadget.image,style="width: 300px;") + img(src=gadget.image,style="width: 300px;") else img(src='/img/dummy_device.gif',style="width: 300px;") .detailcontent diff --git a/views/gadgets/edit.jade b/views/gadgets/edit.jade index 50cbe65..8101e52 100644 --- a/views/gadgets/edit.jade +++ b/views/gadgets/edit.jade @@ -20,7 +20,7 @@ block content input(type="submit") if(gadget.image) - img(src="/"+gadget.image,style="width: 100px;") + img(src=gadget.image,style="width: 100px;") else img(src='/img/device.jpg',style="width: 100px;") br diff --git a/views/gadgets/list.jade b/views/gadgets/list.jade index 223e532..db0b5fb 100644 --- a/views/gadgets/list.jade +++ b/views/gadgets/list.jade @@ -71,7 +71,7 @@ block content a(onclick="openBookingLayer('/bookings/"+gadget._id+"/new')") Book .cont if(gadget.image) - img(src="/"+gadget.image) + img(src=gadget.image) else img(src='/img/dummy_device.gif') if(gadget.bookings&&gadget.bookings.current&&gadget.bookings.current.status == "handout") diff --git a/views/index.jade b/views/index.jade index 08d241b..8428605 100644 --- a/views/index.jade +++ b/views/index.jade @@ -17,7 +17,7 @@ block content - each gadget in gadgets li.element if(gadget.image) - img(src="/"+gadget.image) + img(src=gadget.image) else img(src='/img/dummy_device.gif') div.click