Upload CSV to S3
#
JavaScript with AWS API Gateway- this page hslventures.com/uploadfile allows users to upload their csv file to our s3 bucket. The data then will be stored into one of our databases for process and analysis.
<!DOCTYPE html><html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.2/css/bulma.min.css"> <title>upload your file</title> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.12.min.js"></script> </head> <!-- <h2>Upload your CSV file</h2> --> <body>
<ul> <p> 😃 please enter your email address:</p> <input type="text" name="key" value="myemail@email.com" id="email" required="true"/> </ul> <input type="file" id="file-chooser" accept="csv" required="true"/> <button id="upload-button">upload</button> <button onClick="url()">submit</button> <div id="results"></div>
<!-- main s3 function starts here --> <script type="text/javascript"> AWS.config.region = 'us-east-1'; // 1. Enter your region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ '' // 2. Enter your identity pool });
AWS.config.credentials.get(function(err) { if (err) alert(err); console.log(AWS.config.credentials); });
var bucketName = ''; // Enter your bucket name var bucket = new AWS.S3({ params: { Bucket: bucketName } });
var fileChooser = document.getElementById('file-chooser'); var button = document.getElementById('upload-button'); var input = document.getElementById('email'); var url = document.getElementById('url') var results = document.getElementById('results'); button.addEventListener('click', function() {
var file = fileChooser.files[0]; var email = input
if (file, email) {
results.innerHTML = ''; var objKey = 'uploads/' + email.value + '-' + file.name; var params = { Key: objKey, ContentType: file.type, Body: file, ACL: 'public-read' };
bucket.putObject(params, function(err, data) { if (err) { results.innerHTML = 'ERROR: ' + err; } else { listObjs(); } }); } else { results.innerHTML = 'Nothing to upload.'; } }, false); function listObjs() { var prefix = 'uploading'; bucket.listObjects({ Prefix: prefix }, function(err, data) { if (err) { results.innerHTML = 'ERROR: ' + err; } else { var objKeys = ""; data.Contents.forEach(function(obj) { objKeys += obj.Key + "<br>"; }); results.innerHTML = objKeys; results.innerHTML = ('push submit button') console.log('uploading file') } }); } </script>
<!-- function takes you to thank you page --> <script> function url(){ location.href = 'https://www.hslventures.com/we-will-get-back-to-you'; } </script>
</body>
</html>
#
AWS Lambda Functionthis function notifies me when a new file has been uploaded
var aws = require("aws-sdk");var nodemailer = require("nodemailer");
var ses = new aws.SES();var s3 = new aws.S3();
exports.handler = function (event, context, callback) {
var mailOptions = { from: "", subject: "someone submitted a new file in hslventures!", html: `<p>You got a contact message from: <b>${event.emailAddress}</b></p>`, to: "", // bcc: Any BCC address you want here in an array, };
// create Nodemailer SES transporter var transporter = nodemailer.createTransport({ SES: ses });
// send email transporter.sendMail(mailOptions, function (err, info) { if (err) { console.log("Error sending email"); callback(err); } else { console.log("Email sent successfully"); callback(); } });};