对象相关接口 功能说明 PutObject可以对桶中的一个对象进行追加写操作,如果该对象已经存在,执行该操作则向文件末尾追加内容,否则将创建对象。 通过Append操作创建的Object类型为Appendable,而通过PutObject操作上传的Object的类型是Normal。对Appendable类型的对象进行普通上传操作之后会覆盖原有对象的内容并且将其类型设置为Normal。 Append操作仅可以在未开启版本控制的桶中执行,如果桶的版本控制状态为启用(Enabled)或者暂停(Suspended)状态将不支持Append操作。 代码示例 java public void putObjectAppend() throws AmazonServiceException { System.out.println("putObjectAppend"); String bucket " "; String key " "; long contentLength 0; try { // 获取原始文件长度,也可以使用业务自己的接口获取 ObjectMetadata meta s3Client.getObjectMetadata(bucket, key); contentLength meta.getContentLength(); } catch (AmazonServiceException e){ } String content "123"; byte[] contentBytes content.getBytes(); InputStream is new ByteArrayInputStream(contentBytes); ObjectMetadata metadata new ObjectMetadata(); metadata.setContentType("text/plain"); AppendObjectRequest req new AppendObjectRequest(bucket, key, is, metadata); // req.setStorageClass(StorageClass.Standard); // 设置对象的存储类型 req.setPosition(contentLength); AppendObjectResult ret s3Client.appendObject(req); System.out.println("putObjectAppend success" + ret.getETag()); } 请求参数 AppendObjectRequest 中可设置的参数如下: 参数 说明 是否必须 bucket 桶名称 是 key 对象名称 是 position 追加前对象大小 是 storageClass 对象的存储类型 否 返回结果 AppendObjectResult 返回的属性如下: 参数 类型 说明 ETag String 上传对象后对应的Entity Tag 获取多版本对象列表