`
sillycat
  • 浏览: 2551310 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

AMAZON S3(1)Introduction and File Upload API

 
阅读更多
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文档.pdf

    亚马逊S3 API文档是Amazon Simple Storage Service (S3)的官方参考手册,它详细描述了如何使用S3的REST API进行数据的存储和检索。文档中包含了关于如何操作S3的基本概念、使用方法、身份验证以及数据类型等重要信息...

    Amazon S3 实现文件上传的api以及样例

    Amazon S3,全称为Amazon Simple Storage Service,是亚马逊云服务提供的一个高度可扩展、安全且持久的云存储解决方案。这个服务允许用户存储和检索任意数量的数据,无论数据规模大小,适用于备份、归档、网站托管等...

    s3-api.pdf

    根据提供的文件内容,下面是关于Amazon Simple Storage Service (S3) API的详细介绍。 Amazon S3是AWS(Amazon Web Services)提供的一个可扩展的对象存储服务,主要用于存储和保护数据。Amazon S3提供了简单的Web...

    亚马逊S3接口文档

    亚马逊S3(Simple Storage Service)是亚马逊网络服务(Amazon Web Services,AWS)提供的一个高度可扩展的对象存储服务,主要用于网络上存储和检索任意大小的数据。本文将根据提供的文件内容,详细解读亚马逊S3接口...

    Amazon S3 api

    亚马逊简单存储服务(Amazon S3)是亚马逊网络服务(AWS)提供的对象存储服务,适用于数据存储、备份和大数据分析等多种场景。S3 API是S3服务的接口,允许开发者通过编程方式与S3进行交互。从提供的文件内容中,我们...

    Amazon S3 开发指南--中文

    在2006年3月1日的版本中,Amazon S3对PUT API进行了更新,增加了Content-MD5验证功能,以确保在网络传输过程中数据的完整性。这一改动意味着开发者可以通过Content-MD5校验码来检测数据是否在传输过程中出现错误或...

    Amazon S3 Api Manual

    # Amazon S3 API 手册知识点详解 ## Amazon S3 REST API 介绍 Amazon Simple Storage Service (S3) 是一种对象存储服务,旨在为互联网规模的应用程序提供高可用性、高性能以及低成本的数据存储解决方案。本手册...

    Amazon S3 EC2 api

    Amazon S3 EC2 API 是亚马逊网络服务(AWS)提供的一组接口,用于与Amazon Simple Storage Service (S3) 和 Elastic Compute Cloud (EC2) 进行交互。S3 是一个高度可扩展的云存储服务,而 EC2 则是 AWS 的计算服务,...

    亚马逊S3文件上传

    亚马逊S3(Simple Storage Service)是亚马逊Web Services(AWS)提供的一个高度可扩展、安全可靠的云存储服务。它允许开发者和企业存储、检索和备份大量数据,并提供了丰富的数据管理功能。在本文中,我们将深入...

    aws-java-sdk-s3-1.11.939-API文档-中文版.zip

    赠送原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文件上传

    在Android平台上实现亚马逊S3(Amazon Simple Storage Service)文件上传是一项常见的任务,特别是在移动应用开发中需要存储用户数据或应用程序资源时。以下是一份详细的知识点解析,涵盖了标题和描述中提到的关键点...

    S3对象存储接口文档中文版(亚马逊规则通用)

    1. S3对象存储接口文档的中文版本提供了关于亚马逊S3存储的官方技术文档,当前主要版本为2015年8月13日发布的版本。 2. 文档中提到了适用于.NET框架的开发工具包(***SDK),它是用于Amazon Web Services的一个开源C#...

    springboot集成amazon aws s3对象存储sdk(javav2)

    // Collect completed PartETags and complete the multipart upload List<PartETag> partETags = new ArrayList(); for (int i = 0; i ; i++) { Future<PartETag> future = completionService.take(); ...

    jQuery-File-Upload asp.net MVC3 Demo

    此外,如果项目需求涉及大量文件操作,可能需要引入更高级的文件存储解决方案,如Azure Blob Storage或Amazon S3。 总结起来,"jQuery-File-Upload asp.net MVC3 Demo"是一个演示如何在ASP.NET MVC3框架下利用...

    jQuery-File-Upload for asp.net MVC

    4. 结合Azure Blob Storage或Amazon S3等云存储服务,实现文件的云端存储。 通过以上步骤,我们可以在ASP.NET MVC项目中成功集成jQuery-File-Upload,实现高效的文件上传功能。不过,实际应用中还需要根据项目需求...

    fba amazon 亚马逊spapi,spapi sdk,spapi开发文档,amazon开发者注册流程,亚马逊广告开发

    亚马逊SP-API(Selling Partner API)是亚马逊提供的一项服务,允许第三方开发者和卖家通过API接口直接与亚马逊平台交互,进行各种操作,如管理库存、处理订单、获取销售报告以及进行广告活动等。在这个主题中,我们...

    AWS-S3-File-Upload:用于将文件上传到S3存储桶的Java程序

    标题和描述中的"AWS-S3-File-Upload"指的是一个Java程序,其核心目标是帮助开发者将本地文件有效地上传到AWS S3存储桶。 首先,我们需要了解AWS SDK for Java,它是与AWS服务进行通信的官方Java库。通过此库,我们...

Global site tag (gtag.js) - Google Analytics