最近在用aws的s3做云存储,把文件上传上去,在数据库中记录对应的url,下面是示例代码:
public static String uploadToS3(File tempFile, String remoteFileName) throws IOException { PropertiesUtil propertiesUtil = new PropertiesUtil("s3.properties"); //首先创建一个s3的客户端操作对象(需要amazon提供的密钥) AmazonS3 s3 = new AmazonS3Client( new BasicAWSCredentials(propertiesUtil.getKeyValue(Consts.S3_ACCESS_KEY), propertiesUtil.getKeyValue(Consts.S3_SCERET_KEY))); Region usWest2 = Region.getRegion(Regions.US_WEST_2); s3.setRegion(usWest2); //设置bucket,key String bucketName = Consts.S3_BUCKET_NAME; String key = UUID.randomUUID() + ".apk"; try { //验证名称为bucketName的bucket是否存在,不存在则创建 if (!checkBucketExists(s3, bucketName)) { s3.createBucket(bucketName); } //上传文件 s3.putObject(new PutObjectRequest(bucketName, key, tempFile)); S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); //获取一个request GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest( bucketName, key); Date expirationDate = null; try { expirationDate = new SimpleDateFormat("yyyy-MM-dd").parse("2020-12-31"); } catch (Exception e) { e.printStackTrace(); } //设置过期时间 urlRequest.setExpiration(expirationDate); //生成公用的url URL url = s3.generatePresignedUrl(urlRequest); System.out.println("=========URL=================" + url + "============URL============="); if (url == null) { throw new OperateFailureException("can't get s3 file url!"); } return url.toString(); } catch (AmazonServiceException ase) { ase.printStackTrace(); logger.info("====================================AWS S3 UPLOAD ERROR START======================================"); logger.info("Caught an AmazonServiceException, which means your request made it " + "to Amazon S3, but was rejected with an error response for some reason."); logger.info("Caught an AmazonServiceException, which means your request made it " + "to Amazon S3, but was rejected with an error response for some reason."); logger.info("Error Message: " + ase.getMessage()); logger.info("HTTP Status Code: " + ase.getStatusCode()); logger.info("AWS Error Code: " + ase.getErrorCode()); logger.info("Error Type: " + ase.getErrorType()); logger.info("Request ID: " + ase.getRequestId()); logger.info(ase.getMessage(), ase); logger.info("====================================AWS S3 UPLOAD ERROR END======================================"); throw new OperateFailureException("error occurs during upload to s3!"); } catch (AmazonClientException ace) { logger.info("====================================AWS S3 UPLOAD ERROR START======================================"); logger.info("Caught an AmazonClientException, which means the client encountered " + "a serious internal problem while trying to communicate with S3, " + "such as not being able to access the network."); logger.info("Error Message: " + ace.getMessage()); logger.info("====================================AWS S3 UPLOAD ERROR END======================================"); throw new OperateFailureException("error occurs during upload to s3!"); } } /** * 验证s3上是否存在名称为bucketName的Bucket * @param s3 * @param bucketName * @return */ public static boolean checkBucketExists (AmazonS3 s3, String bucketName) { List<Bucket> buckets = s3.listBuckets(); for (Bucket bucket : buckets) { if (Objects.equals(bucket.getName(), bucketName)) { return true; } } return false; }
上面的代码只是一部分,整个过程是在jsp页面吧文件上传到后台,后台创建一个临时文件,把临时文件上传到s3上,并获取一个可以下载文件的url;
这里是一个英文的参考:http://ceph.com/docs/master/radosgw/s3/java/
相关推荐
### AWS亚马逊SAA助理架构师知识点解析 #### 题目269:VPC间的通信方式 **题目概述:** 一家公司在同一区域内的三个VPC...可以通过EC2实例启动参数中指定用户数据,或者将脚本文件上传至S3存储桶并通过用户数据引用。
AWS4Delphi和uma双语文档在最终使用权,并且可以简单地集成...AWS4D Amazon Trabharte com递归亚马逊AWS的Delphi :gear: 安装*要求:Delphi XE2 项目手册:选项>资源编译器>目录和条件>包含文件搜索路径../AWS4D/src
例如,awss3命令集允许用户使用熟悉且简便的命令语法来管理Amazon S3中的文件,简化了文件上传等任务的操作复杂度。 AWS CLI与AWS的开发工具包(SDK)及适用于不同操作系统和编程语言的AWS工具形成了互补。例如,它...
- **S3的高耐久性**: 虽然S3具有极高的耐久性,但这并不意味着可以忽略上传成功的确认。 **结论**: 成功上传到S3的对象会返回HTTP 200结果代码,并且如果提供了MD5校验和,S3会对其进行验证以确保数据的完整性。 #...
在数据分析方面,AWS 提供敏捷的数据分析工具,如Amazon Redshift和Amazon S3,用于构建数据湖,集成和管理来自不同源的海量多源异构数据。这有助于优化决策制定,例如在分布式能源资源的规划和智能运维中。AWS 还...
Amazon EKS上的Sonatype Nexus存储库OSS 通过EKS上的Helm部署Sonatype Nexus Repository OSS。 通过EFS CSI驱动程序,PV和PVC使用EFS作为Nexus3数据存储 创建一个专用的S3存储桶作为Nexus3 Blobstore 使用外部DNS...
稍作清理之后的Capital Bike公司的公用数据。适合学院的学生进行sql查询练习。原来的数据链接是https://s3.amazonaws.com/capitalbikeshare-data/index.html
其AWS(Amazon Web Services)平台包括一系列服务,如EC2(弹性计算云)用于计算,S3(简单存储服务)用于存储,还有数据库、消息队列、计费和其他设施能力。截至2008年底,已有45万开发者基于AWS开发Web应用,存储...
1. **Amazon Simple Storage Service (S3)**:提供高可用性、可伸缩的存储解决方案,用于存储各种类型的数据,如文件、文档、用户下载和备份。用户可以根据需要支付存储费用,无需预先投资硬件。 2. **Amazon ...
亚马逊S3 亚马逊VPC 亚马逊NACL 前提条件注释 Cloudformation安全组IP地址默认情况下处于打开状态(测试目的)。 您应该使用自己的IP地址更新“安全组访问”,以确保实例的安全性。 在部署此过程之前,您需要...
其中,IaaS提供基础设施,如亚马逊AWS的EC2和S3;PaaS提供平台支持,如Google App Engine和Microsoft Windows Azure;SaaS则提供直接可用的应用服务,如Salesforce的在线CRM系统。 云计算的特点鲜明,包括超大规模...
2005年,Amazon推出Amazon Web Services (AWS),标志着公共云服务的诞生。2006年,AWS相继推出S3(简单存储服务)和EC2(弹性计算云),为用户提供可扩展的计算能力。 2007年,IBM的"蓝云"计划和Google与IBM合作的...
10. **Amazon AWS的推出**:2005年,Amazon宣布Amazon Web Services,2006年相继推出S3和EC2,成为云计算服务的领军者。 11. **其他大公司跟进**:IBM的“蓝云”计划、Sun的“BlackBox”计划、Google与IBM的大学...
2005年,Amazon宣布Amazon Web Services(AWS),开启了公共云服务的时代。2006年,AWS相继推出了S3和EC2,提供了存储和计算服务,奠定了云计算平台的基础。其他科技巨头如IBM、Sun、Google也纷纷跟进,推出各自的...
2. 亚马逊AWS提供了IaaS、PaaS和SaaS服务,例如EC2是IaaS,提供计算资源;而S3是对象存储服务,属于IaaS范畴,但也可以用于托管静态网站,涉及SaaS。 3. 云计算的特点包括: - 超大规模:处理海量数据和应用。 - ...
2005年,Amazon宣布Amazon Web Services(AWS),标志着云计算平台的商业化开端。 2006年,Amazon推出S3和EC2,为用户提供在线存储和计算服务,Sun的“BlackBox”计划则展现了云计算的另一种形态。随后,Google与...
以Amazon AWS为例,其提供了包括计算(EC2)、存储(S3)、数据库(Simple DB)等多种服务,构建了一个全面的云服务平台,吸引了开发者、企业和全球用户。Amazon通过按需付费的商业模式,实现了从内部IT资源到对外IT...