2

我有一个工作上传表单在我的web应用程序,让用户从他们的计算机上传文件。 该文件直接上传到亚马逊s3没有通过我的服务器第一直接上传从谷歌驱动器到亚马逊s3

这是我的表格如何看起来像,我使用jquery文件上传插件。

<form class="startfileupload" action="//s3-us-west-2.amazonaws.com/<?php echo AMAZON_S3_BUCKET ?>/" method="POST" enctype="multipart/form-data" > 
     <input type="hidden" name="key" value="<?php echo $file_name;?>" > 
     <input type="hidden" name="AWSAccessKeyId" value="<?php echo AMAZON_KEY ?>"> 
     <input type="hidden" name="acl" value="private"> 
     <input type="hidden" name="policy" value="<?php echo $aws['base64Policy']; ?>"> 
     <input type="hidden" name="signature" value="<?php echo $aws['signature']; ?>"> 
     <input id="uploadinput" type="file" accept=".xls,.xlsx,.doc,.docx,.ppt,.pptx,.jpg,.jpeg,.png,.bmp, 
      .pdf, .zip" name="file" multiple=""/> 

我希望给用户,供用户选择从他们的谷歌驱动文件,使用我加入了谷歌选择器,它可以让用户从那里挑文件的驱动器API的选项。

他们选择的文件后,我在回调获取文件的元数据(包括文件URL)。

我如何可以用它来将文件直接上传到S3?

我不想把文件上传到我的服务器,然后将其复制到S3,我想dircetly将文件上传到S3。没有必要在客户端下载文件然后上传它,这是否可行?

THX

回答

1

上传文件到S3的唯一方法是将文件发送到S3。

S3不必从外部URL提取的对象的能力。

下载,直接在服务器从谷歌,然后上传到S3,或者你可以使用AWS LAMBDA通过AWS API调用网关来处理在后台实际的下载/上传传输(同步或异步)。

+0

好吧,我看到了,所以后续问题,我如何使用我得到的链接下载该文件到我的服务器?服务器未使用用户凭证进行身份验证,那么他如何才能访问该文件以下载它? –

+1

你没有。你使用Javascript在客户端下载它,然后发布到s3。涉及bo服务器。 –