我有一个工作的上传表单在我的webapp,让用户从他们的计算机上传文件。文件直接上传到amazon 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,我想直接上传文件到s3。这可能不需要在客户端下载文件,然后上传吗?
Thx
上传文件到S3的唯一方法是将文件发送到S3。
S3不具备从外部URL获取对象的能力。
直接从Google下载到您的服务器,然后上传到S3,或者您可以使用通过AWS API Gateway调用的AWS Lambda在后台处理实际的下载/上传传输(同步或异步)
from google。Colab import drive
drive.mount(/内容/驱动器)
!apt-get更新
!Apt install awscli
!aws配置。#给凭证
!aws s3 cp 'drive/MyDrive/PathToFolder/' s3://path