• 关于

    不能上传文件

    的搜索结果

问题

阿里云CRP项目管理只能一个文件一个文件的上传 不能打包一起上传嘛

用阿里云CRP管理代码 不能识别代码更新部分 然后替换吗? 在上传文件时为什么不能上传文件夹或者多个文件一起上传...
crystaler 2019-12-01 20:09:20 1037 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:35 0 浏览量 回答数 0

阿里云爆款特惠专场,精选爆款产品低至0.95折!

爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。 正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点: 软件架构比较复杂,需要考虑文件分块等细节问题。 需要有位置保存元数据,比如已经生成的Object列表等,然后每次请求都重复读取元数据来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。 如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。 为了简化这种场景下的开发成本,OSS提供了追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。 如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。 不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。 上传限制 大小限制:在这种上传方式下,Object不能超过5GB。 命名限制: 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。 后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 如果上传的是图片需要处理,可以使用图片处理。如果上传的是音频或者视频文件也可以使用媒体处理。 功能使用参考 API:AppendObject Java SDK:追加上传 说明 追加上传不支持上传回调操作。 最佳实践 RAM和STS使用指南
2019-12-01 23:12:34 0 浏览量 回答数 0

回答

ReOSS迁移工具(附件迁移一键包!)发布 1.能不能判断 etag不一样的不上传 或者 文件大小一样的不上传? 2.能不能判断并且已有文件不覆盖 所有工具都不带这两个功能 ------------------------- 回10楼enj0y的帖子 有个问题 本地路径参数和BUCKET参数 必须其中一个加"/"符号 如果都不加 / ,那么会建立一个以"/"为目录名的目录,如果两个参数都加"/" 也会有这个情况出现 ------------------------- 回10楼enj0y的帖子 对于我们这种有大量文件需要上传的用户很有必要,本地电脑上传文件的话,如果出现断线,或传送到一半想下次再传送的话,几万个文件根本不知道传送了哪些,没传送哪些,下次传送只能再重复传送所有文件覆盖 目前所出现的本地OSS传送工具根本没有失败列表功能,也没有覆盖提示功能,我们这种不会开发的用户根本不好办 我稍微能看懂点代码,现在我用的唯一一个笨笨的方法,修改了某个工具的源代码,重新编译,获取了路径下所有已上传的文件列表,并用bat批处理删除目录下所有这些已上传的文件,然后再把这个目录下的所有未上传的文件上传,对于我们这种初级用户真的很费事...
youmu286 2019-12-02 00:58:00 0 浏览量 回答数 0

问题

OSS-使用限制

OSS的使用限制如下: 限制项说明归档存储已经存储的数据从冷冻状态恢复到可读取状态需要1分钟的等待时间。访问域名外网、内网(VPC、经典网络)的OSS访问域名,都已支持HTTPS协议接...
青衫无名 2019-12-01 21:34:34 1104 浏览量 回答数 0

问题

关于linux服务器,上传文件安全问题

文件所在目录权限上传的文件权限 linux服务器上tomcat是以 tomca普通用户启动的,tomca属于admins组。用户可以上传图片和 flash文件。要是别人上传的文件中有木马或者后门程序,怎么阻止文件运行;我想要这些文件tom...
落地花开啦 2019-12-01 19:30:05 1375 浏览量 回答数 1

问题

虚拟主机不能上传文件, 多种方式都不行,望释疑

使用多个ftp客户端工具, 都不能上传文件, 文件夹可以上传,文件不行, 真不懂...
qqdom 2019-12-01 19:23:04 1065 浏览量 回答数 3

问题

上传大文件的视频,不能上传

轻量应用服务器,上传大文件的视频,不能上传,小体积的是可以的,我修改了php.ini文件,改成 upload_max_filesize = 50m࿰...
1502711897486382 2019-12-01 19:09:09 172 浏览量 回答数 1

问题

为什么我不能上传文件到ecs

我想把一个文件上传到root目录里面,首先我试了用了SecureCRT的rz,结果就一直卡在这然后我又在终端用了scp 文件 root@ip 这样上传,也是卡住不能上传后来我又用了filezilla,还是不能上传。请问大家这是怎么回事,是没...
tedm 2019-12-01 19:23:42 1111 浏览量 回答数 2

回答

oss拥有海量储存空间,您需要多少就有多少。不过需要注意的是:通过控制台上传、简单上传、表单上传、追加上传的文件大小不能超过5GB,要上传大小超过5GB的文件必须使用断点续传方式。断点续传方式上传的文件大小不能超过48.8TB。
51干警网 2019-12-02 00:29:42 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:32 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档上传文件(Object)OSS Ruby SDK提供了丰富的文件上传接口,用户可以通过以下方式向OSS中上传文件: 上传本地文件到OSS流式上传断点续传上传追加上传上传回调 上传本地文件通过Bucket#put_object接口,并指定:file参数来上传一个本地文件到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object', :file => 'local-file') 流式上传在进行大文件上传时,往往不希望一次性处理全部的内容然后上传,而是希望流式地处理,一次上传一部分内容。甚至如果要上传的内容本身就来自网络,不能一次获取,那只能流式地上传。通过Bucket#put_object接口,并指定block参数来将流式生成的内容上传到OSS: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.put_object('my-object') do |stream| 100.times { |i| stream << i.to_s }end 断点续传上传当上传大文件时,如果网络不稳定或者程序崩溃了,则整个上传就失败了。用户不得不重头再来,这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。通过Bucket#resumable_upload接口来实现断点续传上传。它有以下参数: key 上传到OSS的Object名字file 待上传的本地文件路径opts 可选项,主要包括: :cpt_file 指定checkpoint文件的路径,如果不指定则默认为与本地文件同目录下的file.cpt,其中file是本地文件的名字:disable_cpt 如果指定为true,则上传过程中不会记录上传进度,失败后也无法进行续传:part_size 指定每个分片的大小,默认为4MB&block 如果调用时候传递了block,则上传进度会交由block处理 详细的参数请参考API文档。 其实现的原理是将要上传的文件分成若干个分片分别上传,最后所有分片都上传成功后,完成整个文件的上传。在上传的过程中会记录当前上传的进度信息(记录在checkpoint文件中),如果上传过程中某一分片上传失败,再次上传时会从checkpoint文件中记录的点继续上传。这要求再次调用时要指定与上次相同的checkpoint文件。上传完成后,checkpoint文件会被删除。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')bucket.resumable_upload('my-object', 'local-file') do |p| puts "Progress: #{p}"endbucket.resumable_upload( 'my-object', 'local-file', :part_size => 100 * 1024, :cpt_file => '/tmp/x.cpt') { |p| puts "Progress: #{p}"} 注意: SDK会将上传的中间状态信息记录在cpt文件中,所以要确保用户对cpt文件有写权限。cpt文件记录了上传的中间状态信息并自带了校验,用户不能去编辑它,如果cpt文件损坏则上传无法继续。整个上传完成后cpt文件会被删除。如果上传过程中本地文件发生了改变,则上传会失败。 追加上传OSS支持可追加的文件类型,通过Bucket#append_object来上传可追加的文件,调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存在的文件,这个位置必须是追加前文件的长度。 文件不存在时,调用append_object会创建一个可追加的文件文件存在时,调用append_object会向文件末尾追加内容 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')# 创建可追加的文件bucket.append_object('my-object', 0) {}# 向文件末尾追加内容next_pos = bucket.append_object('my-object', 0) do |stream| 100.times { |i| stream << i.to_s }endnext_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2') 注意: 只能向可追加的文件(即通过 append_object 创建的文件)追加内容。可追加的文件不能被拷贝。 上传回调用户在上传文件时可以指定“上传回调”,这样在文件上传成功后OSS会向用户提供的服务器地址发起一个HTTP POST请求,相当于一个通知机制。用户可以在收到回调的时候做相应的动作。更多有关上传回调的内容请参考OSS 上传回调。 目前OSS支持上传回调的接口只有put_object和resumable_upload。 require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.put_object('files/hello', file: '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 上面的例子使用put_object上传了一个文件,并指定了上传回调并将此次上传的bucket和object信息添加在body中,应用服务器收到这个回调后,就知道这个文件已经成功上传到OSS了。 resumable_upload的使用方法类似: require 'aliyun/oss'client = Aliyun::OSS::Client.new( endpoint: 'endpoint', access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')bucket = client.get_bucket('my-bucket')callback = Aliyun::OSS::Callback.new( url: 'http://10.101.168.94:1234/callback', query: {user: 'put_object'}, body: 'bucket=${bucket}&object=${object}')begin bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)rescue Aliyun::OSS::CallbackError => e puts "Callback failed: #{e.message}"end 注意: callback的URL不能包含query string,而应该在:query参数中指定。可能出现文件上传成功,但是执行回调失败的情况,此时client会抛出 CallbackError,用户如果要忽略此错误,需要显式接住这个异常。详细的例子请参考callback.rb。接受回调的server请参考callback_server.rb。
2019-12-01 23:14:33 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败。重试必须从文件起始位置上传。针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。顾名思义,分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。 相对于其他的上传方式,分片上传适用于以下场景: 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。 基本流程 流程如下: 将要上传的文件按照一定的大小分片。 初始化一个分片上传任务(InitiateMultipartUpload)。 逐个或并行上传分片(UploadPart)。 完成上传(CompleteMultipartUpload)。 该过程需注意以下几点: 除了最后一块Part,其他Part的大小不能小于100KB,否则会导致调用CompleteMultipartUpload接口时失败。 要上传的文件切分成Part之后,文件顺序是通过上传过程中指定的partNumber来确定的,实际执行中并没有顺序要求,因此可以实现并发上传。具体的并发个数并不是越多速度越快,要结合用户自身的网络情况和设备负载综合考虑。 默认情况下,已经上传但还没有调用CompleteMultipartUpload的Part是不会自动回收的,因此如果要终止上传并删除占用的空间请调用AbortMultipartUpload。如果需要自动回收上传的Part,请参考Object生命周期管理。 断点续传 因为已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。 在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。 断点续传功能在移动设备和大文件上传中的优势尤为明显。 上传限制 大小限制:在这种上传方式下,Object的大小是由Part来决定的,最大支持10000块Part。每块Part最小100KB(最后一块可以比100KB小),最大5GB。Object的大小不能超过48.8TB。 命名限制 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 在文件上传到OSS上后,开发者可以使用上传后回调来向指定的应用服务器发起回调请求,进行下一步操作。 如果上传的是图片,可以使用图片服务进行后续处理。 如果上传的是音频或者视频文件,可以使用媒体转码进行后续处理。 功能使用参考: API: MultipartUpload InitiateMultipartUpload UploadPart UploadPartCopy CompleteMultipartUpload AbortMultipartUpload ListMultipartUploads ListParts Java SDK:分片上传 最佳实践 RAM和STS使用指南 Web端直传实践
2019-12-01 23:12:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败。重试必须从文件起始位置上传。针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。顾名思义,分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。 相对于其他的上传方式,分片上传适用于以下场景: 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。 基本流程 流程如下: 将要上传的文件按照一定的大小分片。 初始化一个分片上传任务(InitiateMultipartUpload)。 逐个或并行上传分片(UploadPart)。 完成上传(CompleteMultipartUpload)。 该过程需注意以下几点: 除了最后一块Part,其他Part的大小不能小于100KB,否则会导致调用CompleteMultipartUpload接口时失败。 要上传的文件切分成Part之后,文件顺序是通过上传过程中指定的partNumber来确定的,实际执行中并没有顺序要求,因此可以实现并发上传。具体的并发个数并不是越多速度越快,要结合用户自身的网络情况和设备负载综合考虑。 默认情况下,已经上传但还没有调用CompleteMultipartUpload的Part是不会自动回收的,因此如果要终止上传并删除占用的空间请调用AbortMultipartUpload。如果需要自动回收上传的Part,请参考Object生命周期管理。 断点续传 因为已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。 在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。 断点续传功能在移动设备和大文件上传中的优势尤为明显。 上传限制 大小限制:在这种上传方式下,Object的大小是由Part来决定的,最大支持10000块Part。每块Part最小100KB(最后一块可以比100KB小),最大5GB。Object的大小不能超过48.8TB。 命名限制 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 在文件上传到OSS上后,开发者可以使用上传后回调来向指定的应用服务器发起回调请求,进行下一步操作。 如果上传的是图片,可以使用图片服务进行后续处理。 如果上传的是音频或者视频文件,可以使用媒体转码进行后续处理。 功能使用参考: API: MultipartUpload InitiateMultipartUpload UploadPart UploadPartCopy CompleteMultipartUpload AbortMultipartUpload ListMultipartUploads ListParts Java SDK:分片上传 最佳实践 RAM和STS使用指南 Web端直传实践
2019-12-01 23:12:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 适用场景 当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败。重试必须从文件起始位置上传。针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。顾名思义,分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。 相对于其他的上传方式,分片上传适用于以下场景: 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。 基本流程 流程如下: 将要上传的文件按照一定的大小分片。 初始化一个分片上传任务(InitiateMultipartUpload)。 逐个或并行上传分片(UploadPart)。 完成上传(CompleteMultipartUpload)。 该过程需注意以下几点: 除了最后一块Part,其他Part的大小不能小于100KB,否则会导致调用CompleteMultipartUpload接口时失败。 要上传的文件切分成Part之后,文件顺序是通过上传过程中指定的partNumber来确定的,实际执行中并没有顺序要求,因此可以实现并发上传。具体的并发个数并不是越多速度越快,要结合用户自身的网络情况和设备负载综合考虑。 默认情况下,已经上传但还没有调用CompleteMultipartUpload的Part是不会自动回收的,因此如果要终止上传并删除占用的空间请调用AbortMultipartUpload。如果需要自动回收上传的Part,请参考Object生命周期管理。 断点续传 因为已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。 在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。 断点续传功能在移动设备和大文件上传中的优势尤为明显。 上传限制 大小限制:在这种上传方式下,Object的大小是由Part来决定的,最大支持10000块Part。每块Part最小100KB(最后一块可以比100KB小),最大5GB。Object的大小不能超过48.8TB。 命名限制 使用UTF-8编码。 长度必须在1–1023字节之间。 不能以正斜线(/)或者反斜线(\)字符开头。 上传的安全及授权 为了防止第三方往开发者的Bucket未经授权上传,OSS提供了Bucket和Object级别的访问权限控制,详细解释见访问控制。为了授权给第三方上传,OSS除了Bucket和Object级别的访问权限外,还提供了账号级别的授权,见上传安全之授权第三方。 上传后续操作 在文件上传到OSS上后,开发者可以使用上传后回调来向指定的应用服务器发起回调请求,进行下一步操作。 如果上传的是图片,可以使用图片服务进行后续处理。 如果上传的是音频或者视频文件,可以使用媒体转码进行后续处理。 功能使用参考: API: MultipartUpload InitiateMultipartUpload UploadPart UploadPartCopy CompleteMultipartUpload AbortMultipartUpload ListMultipartUploads ListParts Java SDK:分片上传 最佳实践 RAM和STS使用指南 Web端直传实践
2019-12-01 23:12:30 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板