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服務器。 –