Upload Image Directly From Browser Using AngularJS Amazon S3 -
i trying upload images browser amazon s3 directly, getting error of aws not being defined:
public/modules/users/controllers/settings.client.controller.js 16 | var bucket = new aws.s3({ ^ 'aws' not defined. 18 | credentials: new aws.credentials($scope.creds.access_key, $scope.creds.secret_key) ^ 'aws' not defined.
below code:
'use strict'; angular.module('users').controller('settingscontroller', ['$scope', '$http', '$location', 'users', 'authentication', function($scope, $http, $location, users, authentication) { $scope.user = authentication.user; $scope.profpic = ''; $scope.creds = { bucket: 'bucket_name', access_key: '', secret_key: '' }; $scope.upload = function() { // configure s3 object var bucket = new aws.s3({ region : 'us-east-1', credentials: new aws.credentials($scope.creds.access_key, $scope.creds.secret_key) }); if($scope.file) { var params = { bucket: $scope.creds.bucket, key: $scope.file.name, contenttype: $scope.file.type, body: $scope.file, serversideencryption: 'aes256' }; bucket.putobject(params, function(err, data) { if(err) { // there error s3 config alert(err.message); return false; } else { // success! alert('upload done'); } }) .on('httpuploadprogress',function(progress) { // log progress information console.log(math.round(progress.loaded / progress.total * 100) + '% done'); }); } else { // no file selected alert('no file selected'); } }; // if user not signed in redirect home if (!$scope.user) $location.path('/'); // check if there additional accounts $scope.hasconnectedadditionalsocialaccounts = function(provider) { (var in $scope.user.additionalprovidersdata) { return true; } return false; }; // check if provider in use current user $scope.isconnectedsocialaccount = function(provider) { return $scope.user.provider === provider || ($scope.user.additionalprovidersdata && $scope.user.additionalprovidersdata[provider]); }; // remove user social account $scope.removeusersocialaccount = function(provider) { $scope.success = $scope.error = null; $http.delete('/users/accounts', { params: { provider: provider } }).success(function(response) { // if successful show success message , clear form $scope.success = true; $scope.user = authentication.user = response; }).error(function(response) { $scope.error = response.message; }); }; // update user profile $scope.updateuserprofile = function(isvalid) { if (isvalid) { $scope.success = $scope.error = null; var user = new users($scope.user); user.$update(function(response) { $scope.success = true; authentication.user = response; }, function(response) { $scope.error = response.data.message; }); } else { $scope.submitted = true; } }; // change user password $scope.changeuserpassword = function() { $scope.success = $scope.error = null; $http.post('/users/password', $scope.passworddetails).success(function(response) { // if successful show success message , clear form $scope.success = true; $scope.passworddetails = null; }).error(function(response) { $scope.error = response.message; }); }; } ]) .directive('fileread', [function(){ return { scope: { fileread: '=' }, link: function(scope, element, attributes) { element.bind('change', function(changeevent) { var reader = new filereader(); reader.onload = function(loadevent) { scope.$apply(function() { scope.fileread = loadevent.target.result; }); }; reader.readasdataurl(changeevent.target.files[0]); }); } }; }]);
not sure th eproblem is, first time using angular & dealing wi/ s3.
are sure added aws script.
from looking @ this: https://github.com/aws/aws-sdk-js
i believe may have forgot in html file:
<head> .... <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.17.min.js"></script> .... </head>
or if stored locally:
<head> .... <script src="path/to/file/aws-sdk-2.1.17.min.js"></script> .... </head>
or similar
if using aws in backend & node server you'll need use require (however looking @ code looks doing in frontend):
var aws = require('aws-sdk');
http://docs.aws.amazon.com/awsjavascriptsdk/guide/node-intro.html
Comments
Post a Comment