javascript - 通过 AWS Lambda 发送文件

标签 javascript html ajax amazon-web-services aws-lambda

我一直在使用简单的 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 函数的数据对象中?以及如何允许网站所有者访问它?

最佳答案

您最好的选择可能是将文件上传到 S3 存储桶,然后生成一个预签名的 url,您将其通过电子邮件发送给应该接收它的人。

https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

关于javascript - 通过 AWS Lambda 发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49865327/

相关文章:

c# - 如何从网站获取DOM数据

javascript - 防止在一个 html 中改变滚动位置

javascript - 如何在执行嵌入式脚本时仅插入使用 $.ajax() 加载的完整页面的一部分?

html - 图像不会翻转

html - 用于深层嵌套 div 的 CSS overflow-y

javascript - 完整的 Javascript Ajax php 混淆

javascript - 使用 AJAX 的 session 启动非常慢

javascript - 在 Angular2 中,检测组件滚动的最简单方法是什么

javascript - 通过 for 循环从数组中绘制莫里斯图表数据

javascript - 使整个 div(包括文本)可点击