Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编码方式发送图像,解码后上传至s3_Javascript_Php_Image_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript 以编码方式发送图像,解码后上传至s3

Javascript 以编码方式发送图像,解码后上传至s3,javascript,php,image,amazon-web-services,amazon-s3,Javascript,Php,Image,Amazon Web Services,Amazon S3,我正试图上传s3上非常沉重的文件。现在,图像首先转到服务器temp,然后我将其上传到s3。但是这个过程很耗时,如果多个用户同时上传繁重的图像,会消耗大量带宽,从而影响生产站点。鉴于我还有3个尺寸需要上传,因此我正在调整上传图像的大小,并将其他3个调整大小的图像与此一起发送到s3 我对此进行了研究,找到了这三种可能的解决方案 将图像直接上传到s3。这是不可能的,因为在这种情况下,我们必须公开aws密钥,但我们不能 在队列中添加所有图像并运行少量作业。。在这种情况下,作业稍后将在调整图像大小后将图像

我正试图上传s3上非常沉重的文件。现在,图像首先转到服务器temp,然后我将其上传到s3。但是这个过程很耗时,如果多个用户同时上传繁重的图像,会消耗大量带宽,从而影响生产站点。鉴于我还有3个尺寸需要上传,因此我正在调整上传图像的大小,并将其他3个调整大小的图像与此一起发送到s3

我对此进行了研究,找到了这三种可能的解决方案

  • 将图像直接上传到s3。这是不可能的,因为在这种情况下,我们必须公开aws密钥,但我们不能
  • 在队列中添加所有图像并运行少量作业。。在这种情况下,作业稍后将在调整图像大小后将图像从服务器上载到s3。这是不可能的,因为这也会消耗一些带宽,肯定会影响服务器性能,而且我们已经配置了aws eb,因此一旦部署服务器,映像就会丢失,因此无法使用
  • 使用javascript。。在本例中,我们将从javascript将图像编码为base64,并使用ajax将图像发送到服务器,然后尝试在服务器上解码图像并将其保存在某处,然后将其上载到s3
  • 所以我的问题是,使用第三个选项可以节省上传厚重图像的时间吗? 我可以发送图像编码到服务器,但它会节省用户一些时间上传

    若并没有,那个么在将繁重的图像上传到s3时,我还能做些什么来节省服务器的时间和带宽呢。
    请帮助。

    在处理图像处理时,2号实际上是推荐的选项。还可以使用Lambda函数进行图像转换。()

    将映像添加到特定S3存储桶后,将立即触发作业


    如果需要,您还可以将图像直接上传到S3()

    如果可能,您应该直接上传到Amazon S3。这避免了对文件的“双重处理”,是一个更具可扩展性的解决方案

    您担心的是“暴露AWS密钥”。没有必要担心。您可以使用有限的权限集生成临时的、有时间限制的凭据。它是这样工作的:

    • 您的应用程序对用户进行身份验证,并检查他们是否有权将对象上载到AmazonS3
    • 您的应用程序调用安全令牌服务并请求一组临时凭据,其权限仅允许上载到AmazonS3中的特定存储桶和子目录
    • 将这些凭据传递给用户,或在网页中使用这些凭据,以允许用户上载对象

    AWS的关键概念是为大规模应用而设计。直接上传到Amazon S3可以做到这一点,而首先上传到您自己的服务器会造成瓶颈(而且成本更高!)。

    我不确定您是否已经这样做了,但我使用了javascript sdk来实现这一点,我正在做的是将图像保存到另一台服务器上,然后将它们转移到S3,但是使用javascriptsdk,您可以直接转到s3,您可以在图像到达后添加事件来处理图像

    • 使用Cognito获取未经身份验证的用户/经过身份验证的用户访问权限
    • 以相关bucket中经过身份验证的用户的身份授予权限
    • 在配置编辑器中编辑COR
    • 使用javascript sdk中的代码做任何你想做的事情

    我希望这能有所帮助。

    “在这种情况下,我们必须公开aws密钥,但我们不能公开。”如果这是真的,那么某个地方的某个人就不理解aws是如何工作的。您的AWS访问密钥不是秘密。它被设计为以签名URL和表单的形式公开。这样做是正常的、标准的做法。您的密钥不会公开,没有它,访问密钥就没有用处。嗨,John,这听起来很有希望,而且成本高,而且易于扩展,我们将尝试一下。嗨,非常感谢这个解决方案,我们将尝试一下,看看它能有多高的效率,我认为这肯定会占用一些服务器带宽。