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

时间:2015-10-19 13:04:07

标签: php amazon-web-services file-upload amazon-s3 google-drive-api

我的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我添加了谷歌选择器,让用户从那里选择文件。

选择文件后,我会在回调中获取文件元数据(包括文件网址)。

如何使用它将文件直接上传到s3?

我不想将文件上传到我的服务器,然后将其复制到s3,我想将文件dircetly上传到s3。这是不是必须在客户端下载文件然后上传它?

THX

1 个答案:

答案 0 :(得分:2)

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

S3无法从外部URL获取对象。

直接从Google下载到您的服务器然后上传到S3,或者您可以使用通过AWS API Gateway调用的AWS Lambda来处理后台的实际下载/上传传输(同步或异步)。