Appearance
下载文件
FOS Java SDK提供了丰富的文件下载接口,用户可以通过以下方式从FOS中下载文件:
- 简单流式下载
- 下载到本地文件
- 范围下载
简单流式下载
用户可以通过如下代码将Object读取到一个流中:
java
public void getObject(FosClient client, String bucketName, String objectKey)
throws IOException {
// 获取Object,返回结果为FosObject对象
FosObject object = client.getObject(bucketName, objectKey);
// 获取ObjectMeta
ObjectMetadata meta = object.getObjectMetadata();
// 获取Object的输入流
InputStream objectContent = object.getObjectContent();
// 处理Object
...
// 关闭流
objectContent.close();
}
注意:
- FosObject中包含了Object的各种信息,包含Object所在的Bucket、Object的名称、MetaData以及一个输入流,用户可以通过操作输入流将Object的内容读取到文件或者内存中。
- ObjectMetadata中包含了Object上传时定义的ETag,Http Header以及自定义的元数据。
- 通过FosObject的getObjectContent方法,还可以获取返回Object的输入流,用户可以读取这个输入流来对Object的内容进行操作。
直接下载Object到文件
用户可以通过如下代码直接将Object下载到指定文件:
java
// 新建GetObjectRequest
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
// 下载Object到文件
ObjectMetadata objectMetadata = client.getObject(getObjectRequest, new File("/path/to/file","filename"));
当使用上面方法将Object直接下载到文件时,方法返回ObjectMetadata对象。
范围下载
为了实现更多的功能,可以通过使用GetObjectRequest来指定下载范围,实现更精细化地获取Object。如果指定的下载范围是0 - 100,则返回第0到第100个字节的数据,包括第100个,共101字节的数据,即[0, 100]。
java
// 新建GetObjectRequest
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
// 获取0~100字节范围内的数据
getObjectRequest.setRange(0, 100);
// 获取Object,返回结果为FosObject对象
FosObject object = client.getObject(getObjectRequest);
通过getObjectRequest的setRange方法可以设置返回Object的范围。用户也可以用此功能实现文件的分段下载和断点续传。
其他使用方法
只获取ObjectMetadata
通过 getObjectMetadata 方法可以只获取ObjectMetadata而不获取Object的实体。如下代码所示:
java
ObjectMetadata objectMetadata = client.getObjectMetadata(bucketName, objectKey);
getObjectMetadata方法返回的解析类中可供调用的参数有:
参数 | 说明 |
---|---|
contentType | Object的类型 |
contentLength | Object的大小 |
contentMd5 | Object的MD5 |
etag | Object的HTTP协议实体标签 |
storageClass | Object的存储类型 |
userMetadata | 如果在PutObject指定了userMetadata自定义meta,则返回此项 |
xIcCrc | 如果在PutObject指定了object的CRC值(循环冗余校验码),则返回此项 |