我一直在使用简单的AWS Lamda函数及其SES服务来创建网站联系表单。 我在HTML中创建一个简单的表单,然后将输入的信息转换为JSON字符串对象并通过电子邮件发送给站点所有者。 现在我想添加上传不同文件的功能,我打算使用类似的方法来附加文件并使用AWS Lambda和SES通过电子邮件发送它。 这是我目前的状态和代码。
以下是我用来创建JSON对象的代码,我稍后通过AWS Lambda发送电子邮件
$(document).ready(function() {
$("#submit2").click(function(e) {
e.preventDefault();
var Firstname = $("#Firstname").val(),
Lastname = $("#Lastname").val(),
email = $("#email").val(),
phone = $("#Phone").val(),
address = $("#Address").val(),
backSplash = $("#BackSplash").val(),
material = $("#Material").val(),
message = $("#subject").val();
$.ajax({
type: "POST",
url: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
contentType: 'application/json',
data: JSON.stringify({
'name': Firstname + " " + Lastname,
'phone':phone,
'address': address,
'email': email,
'backSplash' : backSplash,
'material': material,
'message': message
}),
success: function(res){
$('#form-response').text('Your Message Has been sent.');
},
error: function(){
$('#form-response').text('Error, Message was not sent, please try again.');
}
});
})
});`
就上传文件而言,这是我当前的代码
function getFiles(){
var files = document.getElementById("myFiles").files;
var myArray = [];
var file = {};
console.log(files); // see the FileList
// manually create a new file obj for each File in the FileList
for(var i = 0; i < files.length; i++){
//console.log(files[i].name);
file = {
'lastMod' : files[i].lastModified,
'lastModDate': files[i].lastModifiedDate,
'name' : files[i].name,
'size' : files[i].size,
'type' : files[i].type,
}
//add the file obj to your array
myArray.push(file)
}
//save the array to localStorage
localStorage.setItem('files',JSON.stringify(myArray));
console.log(JSON.stringify(myArray));
}
});
如何将上传的文件添加到我传递给AWS Lamda函数的数据对象中?以及如何允许网站所有者访问它?
答案 0 :(得分:1)
您最好的选择可能是将文件上传到S3存储桶,然后生成一个预先签名的网址,然后通过电子邮件发送给应该接收该网址的人。
https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html