HTML5 和 Amazon S3 分段上传

2023-11-26

是否可以使用 HTML 5 File API(例如,这个库:https://github.com/23/resumable.js)与 S3 分段上传功能结合使用?

http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html


是的,但是如果您要将其作为公共网站的一部分,您将需要某种服务器后端以更安全的方式处理 Amazon API 密钥。

您可以找到这些项目的完整示例实现:

  • s3-分段上传-浏览器它使用 PHP 后端
  • s3_multipart它使用 Ruby。

请注意,我尚未使用、测试或审查这些项目。

该序列的粗略描述如下:

  1. User
    • 加载网页
    • 选择要上传的文件
    • 点击上传按钮
  2. Webpage
    • 将有关文件的信息发送到服务器
  3. Server
    • 使用 Amazon API 创建分段上传
    • 将“key”(文件名)和“上传id”发送回网页
  4. Webpage
    • 计算出零件的尺寸
    • 请求服务器签署传递“密钥”、“上传 ID”、部分信息的部分
  5. Server
    • 签署部分请求,发送“部分上传 url”、“日期”和“身份验证标头”
  6. Webpage
    • 使用“日期”和“身份验证标头”通过“部分上传 url”将部分数据直接发送到 Amazon S3
    • 跟踪零件 ID
  7. Server & Webpage
    • 对每个附加部分重复 5 和 6,如果需要则继续
  8. Webpage
    • 向服务器发出“上传完成”请求(传递所有部分信息)
  9. Server
    • 向 Amazon API 发出请求以完成文件的创建
  10. Webpage
    • 通知用户错误或成功

Notes:

  • 如果上传被中止,这也必须在服务器端处理,否则开始的部分/上传将被留下来占用 S3 存储桶中的空间。
  • 可能需要几分钟才能完成向 Amazon 发出的“上传完成”请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 和 Amazon S3 分段上传 的相关文章

随机推荐

  • Linux 上的哪个库中有系统调用,该库如何链接到包含系统调用的可执行目标文件?

    我知道系统调用不在C 标准库中 是否有系统调用所在的库 某种系统库 如果有这样的库 这个库如何链接到可执行程序 A 系统调用可以以几种不同的方式工作 具体取决于目标架构 但无论如何 它是not图书馆的电话 它是正在运行的用户空间程序调用内核
  • 从静态库创建共享库时保留所有导出的符号

    我正在从静态库创建一个共享库 但我没有源代码 许多 Stack Overflow 问题都提供了answers关于如何做到这一点 gcc shared o libxxx so Wl whole archive libxxx a Wl no w
  • AngularJS 页面之间传递数据 + 页面刷新

    我试图在应用程序的结账过程中在页面之间传递数据 但它没有按应有的方式工作 我已经阅读了一些内容 大多数人建议使用服务 但唯一的问题是 当刷新页面时 用户单击刷新或稍后返回 服务中的所有数据都会消失 这是有道理的 因为服务中的数据并不意味着是
  • Java / 将 ISO-8601 (2010-12-16T13:33:50.513852Z) 转换为 Date 对象

    如何解析一个字符串ISO 8601格式与祖鲁时间 javax xml bind DatatypeConverter parseDateTime 2010 12 16T13 33 50 513852Z returns IllegalArgum
  • LibGDX 中 music.class 的 TweenAccessor

    我一直想知道 是否可以使用 LibGDX 中的通用 Tween 引擎来 例如 更改歌曲的音量 我用类似于我的 SpriteAccessor 的代码编写了自己的 MusicAccessor 它实际上适用于 Sprite class 但当涉及到
  • 在 PyCharm 中运行时,Tkinter 窗口显示为黑色

    无论我如何指定背景颜色 Tkinter 背景在运行脚本上都显示为黑色 我在 macOS 12 2 1 上使用 PyCharm CE 2021 3 2 Python解释器 Python 3 8 有5个包 如下 枕头9 0 1 未来0 18 2
  • sprintf() 如何防止 SQL 注入?

    我听说过sprintf 防止 SQL 注入 这是真的吗 如果是这样 怎么办 为什么人们建议这样编写查询 sql sprintf SELECT FROM TABLE WHERE COL1 s AND COL2 s col1 col2 spri
  • 圆线交点

    public static ArrayList
  • 如何从网页确定主机安装的 ASP.NET 版本

    我有一个在 Windows 共享托管环境中运行的网站 在他们的共享主机帐户控制面板中 我将其设置为使用 ASP NET 版本 3 0 但没有具体说明 3 5 SP1 如何查看在 asp net 页面托管我的网站的服务器上运行的已安装版本 T
  • PyMySQL 和 OrderedDict

    我已经使用 PyMySQL 一段时间了 并创建了自己的包装器 我习惯于速记编写查询 尽管如此 我一直在使用 OrderedDict 创建 CSV 文件 因为我需要保持顺序相同 但我意识到 如果我使用 PyMySQL 查询数据库 我将无法获得
  • 将值推送到 Laravel 中现有的缓存值

    我想为现有缓存设置一个值 我有这样的事情 Cache put key foo bar expiresAt 现在我该如何推动 sad 值到这个键而不删除最后的值 在推送值并获取缓存后需要类似的东西 foo bar sad 请尝试以下操作 Ca
  • MySQL 中的基数是什么?

    MySQL 中的基数是什么 请用简单的 非技术性的语言进行解释 如果任何表的索引详细信息显示字段的基数group id为11 那么这意味着什么呢 最大基数 所有值都是唯一的 最小基数 所有值都相同 有些列被称为高基数列 因为它们有约束 例如
  • Python:覆盖 __new__ 中的 __init__ 参数

    我有一个 new 方法如下 class MyClass object def new cls args new args args sort prev args pop 0 while args next args pop 0 if pre
  • 在反应中下载文件

    我有一个使用 Laravel 创建的 Restful API 该 API 如下所示 http 127 0 0 1 8000 api file pdf id 这是我的下载代码 public function pdfDownload id pd
  • “日期”的默认值无效

    我想将日期设置为mysql中日期的默认值 不是时间戳 但出现以下错误 ALTER TABLE RMS transactionentry CHANGE Date Date DATE DEFAULT NOW NOT NULL Error Inv
  • 如何保持响应图像相同的高度?

    我正在制作一个网页 其中有一排并排有封面照片和个人资料图片 我将它们都放在不同大小网格的引导行中 但是 个人资料图片总是低于封面照片 它的高度更大 如何让它们保持响应 但高度相同 我的最终目标是让它们看起来像一条带 之间有填充 然后当窗口大
  • 每次运行硒测试时如何增加字段值?

    每次通过 Selenium IDE 运行 Selenium 测试时 是否有任何简单的方法可以将字段值增加 1 Command Type Target some kind of id Value number 1 EDIT 1 感谢克罗森沃尔
  • 通过 server.execute 传递参数?

    可以通过传递参数server execute 外汇 我在我的site asp我需要的 IF 场景functions asp a something id 123被执行 这可能吗 在 site asp 上 dim id id 123 if b
  • 命令“npm start”不执行任何操作

    进入后npm start在我的 Node 项目的目录中 我看到旋转的管道符号 表明 npm 正在加载 然而 该图形会无限期地显示 并且什么也不会发生 没有提供错误消息 我该如何解决或至少诊断这个问题 My 包 json如下 name Pro
  • HTML5 和 Amazon S3 分段上传

    是否可以使用 HTML 5 File API 例如 这个库 https github com 23 resumable js 与 S3 分段上传功能结合使用 http docs aws amazon com AmazonS3 latest