表单上传(POST上传)
表单上传(POST上传)是指通过HTML表单以POST请求方式,将小于5GB的文件直接从浏览器上传到OBS桶中。它一般普遍适用于WEB应用程序,其应用场景包括但不限于以下几方面:
- 用户交互与内容生成:包括社交账号头像与封面设置、富媒体内容发布、社交动态发布、用户反馈与工单等。
- 业务单据和数据交换:包括后台管理系统批量数据导入、官方证件与材料提交、网课的作业提交等。
- 与云存储服务结合:客户端将文件直传到存储服务,如上传文件到OBS等。
表单上传直接将文件从浏览器上传到OBS桶,无需经过业务服务器中转,能够显著降低服务端的负载压力,有效提高文件上传的处理效率与传输稳定性。
虽然OBS服务支持您将对象上传到指定region的桶里,但是华为云并不感知您对象的具体内容。如果您对象上传行为涉及跨境传输,请您确保使用本服务符合所适用的法律法规要求。
工作原理
OBS服务支持基于浏览器的表单上传对象请求,此类请求的签名信息通过表单的方式上传。计算Post表单上传请求的签名,需要先定义一个安全策略(policy),用于限制表单上传的内容和条件。客户端基于安全策略,使用 SK 生成签名后直传 OBS 对象存储。OBS验证签名和安全策略后,返回上传结果。此方案不支持多段上传,因此不适用于大文件和断点续传场景。了解表单上传的签名和安全策略相关内容,请参见基于浏览器上传的表单中携带签名。
- 用户通过客户端按需定义安全策略,客户端结合SK和安全策略生成签名等信息。
- 客户端使用签名和安全策略等信息,通过表单上传方式上传文件到OBS。
- OBS验证通过后返回成功响应,验证失败则返回错误响应。
前提条件
- 至少已创建了一个桶,并且拥有桶的写权限。
- 如果您需要将文件归类处理,可以先新建文件夹,然后将相关的文件上传到文件夹中。新建文件夹的步骤请参见创建文件夹。
使用限制
大小及数量限制:
命名限制:
注意事项
- 防止覆盖同名对象:
- 在未开启多版本控制功能的情况下,
- 如果新上传的文件和桶内文件重名,则新上传的文件会自动覆盖老文件,且不会保留老文件的ACL等信息;
- 如果新上传的文件夹和桶内文件夹重名,则上传后会将新老文件夹合并,合并过程如遇重名文件,会使用新上传的文件夹中的文件进行覆盖。
- 在开启了多版本控制功能的情况下,如果新上传的文件和桶内文件重名,则会在老文件上新增一个版本。关于多版本的详细介绍请参见多版本控制简介。
- 在未开启多版本控制功能的情况下,
- 授权上传
- 为了防止未经授权的用户上传文件到桶里,您可以通过设置访问控制权限来授权用户上传文件到桶内。了解表单上传权限配置相关信息,请参见POST上传授权信息。
OBS按照对象名的UTF-8编码范围来进行分区管理,对系统进行水平扩展与动态负载均衡。如果用户在对象命名规则上使用了顺序前缀(如时间戳或字母顺序),可能导致大量对象的请求访问集中于某个特定分区,造成访问热点。热点分区上的请求速率受限,访问时延上升。
推荐使用随机前缀对象名,这样请求就会均匀分布在多个分区,达到水平扩展的效果。
使用方式
OBS支持通过API、SDK表单上传对象。
日志与监控
用户可以通过设置EG事件类型:OBS:DWR:ObjectCreated:POST和DIS事件类型:ObjectCreated,从而能够及时感知该操作并且可以触发后续操作流程。了解更多事件通知相关操作,请参见事件通知。