开发者社区> 云上珠玑> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

对象存储OSS如何通过PutObject上传文件?

简介: 迁移OSS的文件,就是将用户其他数据源的文件迁移至OSS。接下来几篇文章将介绍的方法是以下四种:一、通过API/SDK上传文件;二、通过API/SDK拷贝文件;三、通过oss-import工具迁移文件;四、通过云市场服务迁移文件。
+关注继续查看

迁移OSS的文件,就是将用户其他数据源的文件迁移至OSS。接下来几篇文章将介绍的方法是以下四种:一、通过API/SDK上传文件;二、通过API/SDK拷贝文件;三、通过oss-import工具迁移文件;四、通过云市场服务迁移文件。

通过API/SDK的方式上传文件以完成数据迁移的工作。众所周知,OSS所有的操作都是基于底层restfull的API接口来实现的,因此所有关于OSS的操作均可以通过API或者SDK来操作,数据迁移也不例外。通过API或者SDK中的PutObject、PostObject和MultipartUpload三个接口可以完成数据上传操作以进行数据迁移。这三种接口主要适用于不同的应用场景:PutObject主要适用于用户的服务器端向OSS发送文件,而该文件不宜太大的这种普适的适用场景;PostObject则适用于通过html表单直接post文件到OSS,不需要经过用户的应用服务器,这样减少用户应用服务器的负载情况;MultipartUpload支持断点上传,适用于网络质量较差或者文件大小较大的情况下的上传。通过上述的分析,可以知道本方法的优缺点,其中优点主要包括以下两点:一、适用场景广泛。用户只要可以获取到源数据,即可在任何地点通过该方式迁移数据至OSS,不需要限制用户源数据的来源、方式以及其文件格式等。二、使用灵活。用户可根据自己的需要自行编写迁移逻辑,选择是全量迁移、增量迁移或者舍去部分文件格式不进行迁移等,许多复杂的迁移逻辑都可以由用户通过代码来实现。对应其优点也就有两点主要的缺点:一、操作复杂。用户需要自行实现迁移逻辑,包括遍历源数据、调用上传接口等操作都需要用户通过代码来实现,需要用户有一定的代码基础。二、速度较慢。如果用户在调用API或者SDK的时候选择EndPoint为OSS的公网域名的情况下,该上传操作即需要通过公网来阐述。虽然OSS服务器端并未限制上传操作的带宽,但是该操作可能会受到源端公网带宽以及网络链路的影响而导致上传速度较慢。

接下来我们将以JavaSDK的方式向大家演示如何通过API/SDK的PutObject和MultipartUpload两个接口完成上传操作。

首先,登录阿里云的官网,找到帮助文档。

image

然后在帮助文档中我们找到OSS,点击SDK示例,点击Java→安装。

image

在安装页面中点击直接下载,下载完成后,我们将得到对应的SDK的压缩包。

image

对其进行解压,我们可以得到对应的文件夹,点击进入文件夹,我们可以得到整个SDK的文件目录,其中主要包含以下几个部分:

image

doc主要包含SDK的说明文档,包含其中的各个接口以及类的说明。

image

lib包含了SDK的依赖包,用户在加入SDK的时候需要将对应的lib文件夹下的所有jar包加入工程中才可以正常使用SDK。

image

Samples主要包含为用户提供的一些示例代码。根据其类别,我们对其进行了分类,然后用户可以根据各名称进行挑选。

image

sources主要包含了SDK的源代码,用户如果需要修改源代码的话,可以根据本源代码进行修改。

image

接下来我们将向大家介绍如何通过Java的SDK调用API的PutObject和MultipartUpload来完成数据的上传操作。

首先,我们找到本地的eclipse开发环境,将其打开。在菜单栏中新建Java Project,定义Project名称为OssTest_1,选择Next。

image

在Libraries里头添加额外的jar包(这里我们找到SDK中的lib文件夹,将lib文件夹中的所有jar包添加进来),点击Finish。这样,我们一个简单应用JavaSDK的项目就算建成了。我们可以在src里头添加对应的class来完成对应的操作。

image

这里我们直接应用SDK中提供的示例代码为大家进行讲解。

首先我们将向大家介绍如何通过PutObject上传文件,其中PutObject主要的逻辑代码如本代码所示。

image

其中重要的几个部分分别是ACCESS_ID、ACCESS_KEY,这两个分别对应用户帐号的AccessKeySecret和AccessKey。Endpoint指定的是对应的Bucket所属的域名。用户可以根据Bucket的地理数据中心来得到对应的Endpoint的值。

image

我们以杭州为例,Bucketname指定的是用户设置的Bucket的名称,用户可以选择自己在OSS控制台上创建的OSS Bucket的名称。Key指的是对应的上传的Object的Key值,这里Key包含了Object相对的目录以及它的文件名,用户可以在这个地方指定其相对目录。比方说aliyuntest/photo1.jpg文件。这里我们根据ID、Key还有Endpoint我们可以new一个OSSCllent对象得到对应的Cllent对象。

接下来我们调用Cllent对象的PutObject接口来实现上传操作。这里主要有两种方法:第一种是根据stream流来上传。这里我们首先去得到一个文件,然后将文件的内容捕获成stream流,再通过PutObject上传进入Cllent。这里需要注意的是,我们在通过流上传的时候需要指定它对应的ObjectMetadata,其中必须要指定的一个参数是ContentLength,该参数指定了文件的大小,而ContentType主要是指定了文件的类型。

image

第二种方法是直接通过文件的形式进行上传。如果是上传用户本地已有的文件,建议使用第二种方法。这样只需要new一个file对象即可通过PutObject完成上传。

使用PutObject有以下三点注意事项:

一、用户在metaData中指定了Content-MD5请求头的时候,OSS会在接收到完全的body以后计算body的Content-MD5并与用户指定的MD5请求头进行一致性校验。如果一致性校验通过,该文件及上传成功;如果校验失败,则会出现上传失败的操作。
二、如果在Head中用户没有加入Content length参数,则会返回411 Length Required错误。如果在Head中用户加入的Content length参数过小,则可能会导致文件只上传了前半部分的Content length长度,而后半部分的文件则直接丢弃。如果用户设置的Content length参数过大,可能会导致OSS一直等待客户端发起的包一直到Timeout,报超时错误。
三、如果用户在创建OSSCllent的时候指定的ID/KEY或者ENDPOINT有误的时候可能会报403 AccessDenide的问题。

更多信息参见:对象存储 OSS > SDK 示例 > Java > 简单上传


原文地址:https://aliyunnew.com/a/How-does-Object-Storage-OSS-upload-files-via-PutObjectMultipartUpload.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
三大场景,对象存储OSS带你快速上云
本文介绍对象存储OSS的主要应用场景。 图片和音视频等应用的海量存储 OSS可用于图片、音视频、日志等海量文件的存储。
2565 0
基于对象存储 OSS 的智能数据分析处理框架和功能
今年参加了 2019 全球闪存峰会(Flash Memory World),分享了“基于云存储的智能数据分析处理架构”,重点介绍在对象存储 OSS 之上的数据处理功能,现整理相关内容和大家探讨。
2498 0
对象存储 OSS 常见问题
本文列举了阿里云对象存储 OSS 的常见问题,帮助您快速了解 OSS。
8996 0
如何设置对象存储OSS静态网站托管功能?
今天为大家介绍一下如何设置OSS的默认页面。OSS的静态网站托管功能,主要是允许客户将一个.html的静态文件上传到bucket中作为bucket外网域名访问的一个特定页面。 接下来,我们登录控制台给大家详细介绍一下设置方法。
3305 0
如何设置对象存储OSS跨域(CORS)?
CORS的中文名是跨域资源共享,是HTML5提供的标准跨域解决方案。跨域访问,也叫JavaScript跨域访问问题,是浏览器出于安全考虑而设置的一个限制,即同源策略。当来自于A网站的页面中的JavaScript代码希望访问B网站的时候,浏览器会拒绝该访问,因为A、B两个网站是属于不同的域。
6612 0
对象存储OSS的几个基本概念
本文主要介绍一下OSS使用中的几种基本概念。我们将给大家介绍OSS的Bucket、Object、Region、Endpoint和AccessKey。 Bucket 首先给大家介绍一下Bucket,Bucket是用户用来管理所存储Object的储物空间。
6015 0
对象存储OSS如何进行图片处理?
阿里云对象存储服务提供图片处理功能,您可以将常用的图片处理操作保存成样式。一个复杂的操作利用样式功能后,使用一个很短的URL链接就能实现相同的效果。下面我们来介绍一下如何使用图片样式功能。 首先登录阿里云对象存储控制台,选择目标存储空间。
4376 0
阿里云对象存储OSS是什么?
阿里云对象存储服务,简称 OSS,它是面向海量数据规模的分布式存储服务,具有稳定、可靠、安全、低成本的特点,能够提供十一个九的数据可靠性。 对象存储提供与平台无关的RESTful API接口,使您可以在互联网任何位置存储和访问。
6953 0
对象存储OSS数据加密整体解决方案介绍
一、简介   数据保护是指数据传输(上传数据至OSS、从OSS下载数据)和处于静止状态(数据存储在OSS数据中心磁盘)期间保护数据。可以使用SSL或者客户端加密保护传输中的数据。也可以采用以下方式保护静态数据: 使用服务器端加密 (SSE) --OSS将数据保存到数据中心的磁盘之前进行加密,并且在下载对象时自动进行解密; 使用客户端加密(CSE) --可以使用客户端加密SDK,在本地进行数据加密,并将加密后的数据上传到OSS。
4186 0
阿里云产品对象存储oss的使用心得
前言 之前打算写一篇有关个人博客SEO优化的体验和一些自身体会,但是发现自己还没完全理解SEO的一些核心知识和原理,所以就等到以后再来写,毕竟我的百度权值还是0(笑...)。接下来讲解一下博客中用的图床——阿里云对象存储(Object Storage Service,简称OSS),虽然目前大家用的比较多的是七牛云之类的,但是因为我个人原因我还是选择了阿里云,后面我会简单说明下原因。
4413 0
+关注
云上珠玑
后端开发者,阿里云用户
75
文章
239
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载