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
来源: https://yq.aliyun.com/articles/684323