对象相关接口 功能说明 您可以使用 putObject 接口上传对象。如果对同一个对象同时发起多个上传请求,最后一次完成的请求将覆盖之前所有请求的上传的对象。可以通过设置请求头部中的ContentMD5字段来保证数据被完整上传,如果上传的数据不能通过MD5校验,该操作将返回一个错误提示。用户可以通过比较上传对象后获得的ETag 与原文件的MD5值是否相等来确认上传操作是否成功。 上传对象操作在上传对象时可以在请求里携带HTTP协议规定的6个请求头:CacheControl、Expires、ContentEncoding、ContentDisposition、ContentType、ContentLanguage。如果上传对象的请求设置了这些请求头,服务端会直接将这些头域的值保存下来。这6个值也可以通过修改对象元数据操作进行修改。在该对象被下载或者执行HeadObject操作的时候,这些保存的值将会被设置到对应的HTTP头域中返回客户端。 PutObject操作可以上传最大不超过5GB的文件,超过5GB的文件可以通过分片上传操作上传到对象存储(融合版)服务,对象key的命名使用UTF8编码,长度必须在1~1023字节之间,不能以[/][]字符开头。 代码示例 文件上传 java public void putObject1() throws AmazonClientException { String bucket " "; String key " "; String localPath " "; PutObjectResult ret s3Client.putObject(bucket, key, new File(localPath)); System.out.println("putObject: " + ret.getETag()); } 流式上传 java public void putObject2() throws AmazonClientException { System.out.println("putObject"); String bucket " "; String key " "; String content "1234"; byte[] contentBytes content.getBytes(); InputStream is new ByteArrayInputStream(contentBytes); ObjectMetadata meta new ObjectMetadata(); ); ; ; PutObjectRequest req new PutObjectRequest(bucket, key, is, meta); // 设置acl req.setCannedAcl(CannedAccessControlList.PublicRead); // 设置存储类型 ; // rate 上传限速,单位KB //req.putCustomRequestHeader("xamzlimit", String.format("rate%d", 10)); PutObjectResult ret s3Client.putObject(req); System.out.println("putObject: " + ret.getETag()); } public String md5Base64(String data) { try { MessageDigest md MessageDigest.getInstance("md5"); byte[] md5 md.digest(data.getBytes()); BASE64Encoder be new BASE64Encoder(); return be.encode(md5); } catch (NoSuchAlgorithmException e) {} return ""; }