直接从谷歌驱动器上传到亚马逊s3


direct upload from google drive to amazon s3

我有一个工作的上传表单在我的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