AMAZON S3(1)Introduction and File Upload API
S3 Amazon Simple Storage Service(Amazon S3) - Simple Storage Service
Price
5GB of Amazon S3, 20,000 Get requests, 2,000 Put Requests and 15GB of data transfer out each month for one year.
First 1 TB/month $0.03 per G or $0.0125 per GB or $0.007 per GB
1. Using the High-Level Java API for Multipart Upload
http://docs.aws.amazon.com/AmazonS3/latest/dev/mpListPartsJavaAPI.html
2. Using the Low-Level Java API for Multipart Upload
http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html
3. Upload My InputStream File to S3
Prepare the S3Storage Client
package com.sillycat.persist
import com.amazonaws.auth.BasicAWSCredentials
import com.amazonaws.regions.{Regions, Region}
import com.amazonaws.services.s3.AmazonS3Client
import com.sillycat.util.{IncludeLogger, IncludeConfig}
object S3Storage extends IncludeConfig with IncludeLogger{
private def getCredential = {
new BasicAWSCredentials(
config.getString(envStr("s3.keyId")),
config.getString(envStr("s3.accessKey"))
)
}
val getClient = new AmazonS3Client(getCredential)
val regionName = config.getString(envStr("s3.regionName"))
getClient.setRegion(Region.getRegion(Regions.fromName(regionName)))
}
Util Class upload the InputStream
package com.sillycat.persist
import java.io.{File, InputStream}
import com.amazonaws.services.s3.model.{CannedAccessControlList, ObjectMetadata, PutObjectRequest}
import com.amazonaws.util.{Base64, IOUtils}
import com.sillycat.util.IncludeConfig
import org.apache.commons.codec.digest.DigestUtils
object S3StorageUtil extends IncludeConfig{
val bucketName = config.getString(envStr("s3.bucketName"))
val publicURLHost = config.getString(envStr("s3.publicURL"))
def uploadObject(keyName:String, inputStream: InputStream): String ={
val s3client = S3Storage.getClient
val metadata = new ObjectMetadata()
val request = new PutObjectRequest(bucketName, keyName, inputStream, metadata)
request.setCannedAcl(CannedAccessControlList.PublicRead)
val meta = new ObjectMetadata()
meta.setContentLength(IOUtils.toByteArray(inputStream).length)
val resultByte = DigestUtils.md5(inputStream)
val streamMD5 = new String(Base64.encode(resultByte))
meta.setContentMD5(streamMD5)
s3client.putObject(request)
val publicURL = publicURLHost + File.separator + bucketName + File.separator + keyName
publicURL
}
}
In this implementation, I solve the memory issue.
[warn] c.a.s.s.AmazonS3Client - No content length specified for stream data. Stream contents will be buffered in memory and could result in out of memory errors.
References:
http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMPDotJavaAPI.html
https://aws.amazon.com/s3/
http://abc08010051.iteye.com/blog/2082956
http://stackoverflow.com/questions/8351886/amazons3-putobject-with-inputstream-length-example
分享到:
相关推荐
亚马逊S3 API文档是Amazon Simple Storage Service (S3)的官方参考手册,它详细描述了如何使用S3的REST API进行数据的存储和检索。文档中包含了关于如何操作S3的基本概念、使用方法、身份验证以及数据类型等重要信息...
Amazon S3,全称为Amazon Simple Storage Service,是亚马逊云服务提供的一个高度可扩展、安全且持久的云存储解决方案。这个服务允许用户存储和检索任意数量的数据,无论数据规模大小,适用于备份、归档、网站托管等...
根据提供的文件内容,下面是关于Amazon Simple Storage Service (S3) API的详细介绍。 Amazon S3是AWS(Amazon Web Services)提供的一个可扩展的对象存储服务,主要用于存储和保护数据。Amazon S3提供了简单的Web...
亚马逊S3(Simple Storage Service)是亚马逊网络服务(Amazon Web Services,AWS)提供的一个高度可扩展的对象存储服务,主要用于网络上存储和检索任意大小的数据。本文将根据提供的文件内容,详细解读亚马逊S3接口...
亚马逊简单存储服务(Amazon S3)是亚马逊网络服务(AWS)提供的对象存储服务,适用于数据存储、备份和大数据分析等多种场景。S3 API是S3服务的接口,允许开发者通过编程方式与S3进行交互。从提供的文件内容中,我们...
在2006年3月1日的版本中,Amazon S3对PUT API进行了更新,增加了Content-MD5验证功能,以确保在网络传输过程中数据的完整性。这一改动意味着开发者可以通过Content-MD5校验码来检测数据是否在传输过程中出现错误或...
# Amazon S3 API 手册知识点详解 ## Amazon S3 REST API 介绍 Amazon Simple Storage Service (S3) 是一种对象存储服务,旨在为互联网规模的应用程序提供高可用性、高性能以及低成本的数据存储解决方案。本手册...
Amazon S3 EC2 API 是亚马逊网络服务(AWS)提供的一组接口,用于与Amazon Simple Storage Service (S3) 和 Elastic Compute Cloud (EC2) 进行交互。S3 是一个高度可扩展的云存储服务,而 EC2 则是 AWS 的计算服务,...
亚马逊S3(Simple Storage Service)是亚马逊Web Services(AWS)提供的一个高度可扩展、安全可靠的云存储服务。它允许开发者和企业存储、检索和备份大量数据,并提供了丰富的数据管理功能。在本文中,我们将深入...
赠送原API文档:aws-java-sdk-s3-1.11.939-javadoc.jar 赠送源代码:aws-java-sdk-s3-1.11.939-sources.jar 包含翻译后的API文档:aws-java-sdk-s3-1.11.939-javadoc-API文档-中文(简体)版.zip 对应Maven信息:...
在Android平台上实现亚马逊S3(Amazon Simple Storage Service)文件上传是一项常见的任务,特别是在移动应用开发中需要存储用户数据或应用程序资源时。以下是一份详细的知识点解析,涵盖了标题和描述中提到的关键点...
1. S3对象存储接口文档的中文版本提供了关于亚马逊S3存储的官方技术文档,当前主要版本为2015年8月13日发布的版本。 2. 文档中提到了适用于.NET框架的开发工具包(***SDK),它是用于Amazon Web Services的一个开源C#...
// Collect completed PartETags and complete the multipart upload List<PartETag> partETags = new ArrayList(); for (int i = 0; i ; i++) { Future<PartETag> future = completionService.take(); ...
此外,如果项目需求涉及大量文件操作,可能需要引入更高级的文件存储解决方案,如Azure Blob Storage或Amazon S3。 总结起来,"jQuery-File-Upload asp.net MVC3 Demo"是一个演示如何在ASP.NET MVC3框架下利用...
4. 结合Azure Blob Storage或Amazon S3等云存储服务,实现文件的云端存储。 通过以上步骤,我们可以在ASP.NET MVC项目中成功集成jQuery-File-Upload,实现高效的文件上传功能。不过,实际应用中还需要根据项目需求...
亚马逊SP-API(Selling Partner API)是亚马逊提供的一项服务,允许第三方开发者和卖家通过API接口直接与亚马逊平台交互,进行各种操作,如管理库存、处理订单、获取销售报告以及进行广告活动等。在这个主题中,我们...
标题和描述中的"AWS-S3-File-Upload"指的是一个Java程序,其核心目标是帮助开发者将本地文件有效地上传到AWS S3存储桶。 首先,我们需要了解AWS SDK for Java,它是与AWS服务进行通信的官方Java库。通过此库,我们...