javascript - 将 txt 上传到 Amazon S3

标签 javascript angularjs amazon-s3

我正在使用 s3 sdk 上传一个字符串(这将被更改为一个 txt 文件)。 使用sdk是可以的。但由于 sdk 仅适用于新浏览器(例如:ie10+)我需要用另一种方式上传我的文件(对于旧浏览器)

对于图像文件,我使用输入(类型文件)和上传表单

<form id="urlform" enctype="multipart/form-data" method="post" target="upload_target" class="inline">
    <input type="hidden" name="key" value="{{$parent.keyurl}}">
    <input type="hidden" name="acl" value="public-read">
    <input type="hidden" name="AWSAccessKeyId" value="{{$parent.awSAccessKeyIdUrl}}">
    <input type="hidden" name="success_action_redirect" value="{{$parent.redirectionUrl}}">
    <input type="hidden" name="x-amz-meta-filename" value="{{$parent.filenameurl}}">
    <input type="hidden" name="policy" value="{{$parent.policyurl}}">
    <input type="hidden" name="signature" value="{{$parent.signatureurl}}">
    <input type="hidden" name="x-amz-security-token" value="{{$parent.urlSessionToken}}">
    <div>
        <label>
        </label>
        <input type="file" name="file" id="urlfileinput">
    </div>
</form> 

此解决方案仅适用于输入类型文件。

出于安全原因,我无法使用 jquery 更改输入的值。

是否有另一种上传文本的方法(也许使用 rest api)?

最佳答案

我很好奇您为什么要使用 URL 表单将此提交给亚马逊...这是非常不安全的,因为您要将您的 AWS 访问 key 分发给每个人。首先,您需要研究使用 Amazon SDK for Javascript ,它应该很容易与 Angular 作为依赖项一起工作。

接下来,您需要考虑执行 CORS on your S3 Bucket (cross domain resource sharing)这样您实际上就可以从任何地方在 S3 上“上传”某些内容而无需身份验证(请注意这一点,因为 每个人 都可以访问它并可以上传任何内容,如果您不配置它正确,可以访问其他东西,如删除)。

最后,您只需使用 SDK 的 AWS.S3().putObject()函数将您需要的任何内容上传到您的公共(public) S3 存储桶。

关于javascript - 将 txt 上传到 Amazon S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23287847/

相关文章:

javascript - 使用 setInterval 定位特定类并使用 jQuery 实现功能

JavaScript 正则表达式匹配

AngularJS:找到原始数组中过滤值的索引位置

java - 如何使用 Lambda 在 S3 存储桶内触发应用程序?

java - Amazon s3 putObject Excel 按流不工作(java)

javascript - react 终极版 : Getting Props And Updating State

javascript - 在从 sibling 中删除类(class)时切换类(class)

javascript - '$' 在 '$scope' Angular 变量中的真正含义是什么

javascript - 如何访问 AngularJS promise 链中先前 promise 的结果?

amazon-s3 - 使用我自己的域/子域生成 AWS S3 PreSigned URL