【答疑】对象存储OSS常见问题解答(咨询类2)

1. oss支持直接网络流上传么,比如说客户有个url,然后里面的内容直接上传到oss上面?


解答:OSS支持流式上传。


流式上传是简单上传的一种,流式上传使用InputStream作为文件的数据源。
利用流式上传可以上传字符串,Byte数组,网络流,文件流。

具体可以参考 https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.689.7e5e3bdbBhY7x7#h2-u6587u4EF6u4E0Au4F202


2. HeadObject接口里的 x-oss-actual-etag 是object实际的etag吗?

解答: 不一定是。简单上传的时候是,分片上传的时候不是。


OSS上的object会有etag标签,etag主要是用来判断服务端数据是否存在变化。
但是,这个标签并不一定等同于文件的MD5值,所以不建议作为校验数据一致性的依据。
如果需要校验上传到OSS的文件和本地文件是否一致,可以在上传文件时携带文件的Content-MD5值,
这时OSS服务端会帮用户进行MD5校验,只有在OSS服务器接收到的文件MD5值和Content-MD5一致时才可以上传成功,从而保证上传数据的一致性。

具体可以参考 https://help.aliyun.com/knowledge_detail/39615.html?spm=5176.11065259.1996646101.searchclickresult.178f7d80XxvPEN


3. oss迁移,能用运维的方式做么?

解答: 可以使用OSSImport工具


OssImport工具可以将本地、其它云存储的数据迁移到OSS,它有以下特点:

支持的丰富的数据源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍云、腾讯云COS、金山KS3、HTTP、OSS等,并可根据需要扩展;
支持断点续传;
支持流量控制;
支持迁移指定时间后的文件、特定前缀的文件;
支持并行数据下载、上传;
支持单机模式和分布式模式,单机模式部署简单使用方便,分布式模式适合大规模数据迁移

另外近日还推出了界面操作方式的在线迁移服务,可以更方便的进行数据迁移。

阿里云在线迁移服务是阿里云提供的存储产品数据通道。

使用在线迁移服务,您可以将第三方数据轻松迁移至阿里云对象存储 OSS,也可以在对象存储 OSS 之间进行灵活的数据迁移。

4. 如何开通日志服务?

解答:您可以在OSS管理控制台中使用日志分析功能,对海量日志进行分析。

日志分析为收费项目,资费标准请查阅计费方式说明日志分析操作和日志字段说明


OSS的用户常需要分析访问日志和资源消耗相关的数据,如:

OSS存储、流量、请求的使用情况
文件生命周期过程中的日志查询(创建、修改、删除)
热点的文件、其访问量以及产生的流量
获取报错请求日志列表及错误内容
具体开通步骤请参考: https://help.aliyun.com/document_detail/70449.html?spm=5176.11065259.1996646101.searchclickresult.308a69bdc1jtXq


5. oss的bucket能否限制上传文件的类型

解答:通过postpolicy和url签名是可以限制上传的content-type。关于content-type的介绍可以参考:https://help.aliyun.com/knowledge_detail/39522.html?spm=5176.11065259.1996646101.searchclickresult.7b323836Oi9Hzd


6. java sdk 流式下载时候报这错误 error:Premature end of Content-Length delimited message body

解答: 原因是两次读取数据间隔时间超过1分钟。OSS会关闭超过1分钟没有发送或接收数据的连接。


通常会返回如下错误:


Exception in thread "main" org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 11990526; received: 202880
	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180)
	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:200)
	at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:103)
	at org.apache.http.impl.execchain.ResponseEntityProxy.streamClosed(ResponseEntityProxy.java:128)
	at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:228)
	at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:174)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at com.aliyun.oss.event.ProgressInputStream.close(ProgressInputStream.java:147)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at samples.HelloOSS.main(HelloOSS.java:39)
如果您每次读取部分数据进行处理,且处理数据的时间不固定,建议使用 指定范围读取 ,避免数据读取时连接关闭。


具体请参考: https://help.aliyun.com/document_detail/32024.html?spm=a2c4g.11186623.6.724.66192237ATTw3o#h2-u8FDEu63A5u5173u95ED6


猜你喜欢

转载自yq.aliyun.com/articles/684323