从零开始使用阿里云OSS服务(白嫖)
阿里云对象存储服务OSS使用记录
1 新人免费开通OSS服务
访问 阿里云官网,登录账号(个人新用户账号),首页搜索 对象存储OSS,点击下方的直达。
点击立即开通,此时会在一个新网页中完成开通
完成开通后,回到原来的网页,点击下方的新人特惠,会跳转到本页的下方。
根据登录的账号是个人新用户,还是企业新用户,可以免费试用三个月。由于我这里是个人新用户,以下操作都为个人新用户的操作。
点击上图第一个的立即购买,会跳出详情页面,一般默认即可。
点击立即购买,跳转到确认订单页面,点击去支付,完成支付。
如果提示未完成协议签署,则点击签署并下单
完成支付后,会出现支付成功的界面
点击其中管理控制台,跳转到对象存储的管理台界面,点击资源包管理,可以看到刚刚购买成功的资源包。
至此,获得了可以白嫖三个月的OSS服务。
2 使用OSS服务
创建一个新的Bucket,并作如下设置
注意:此处的存储类型选择为标准存储,因为刚获得的资源包是标准存储包
手动上传一个文件,测试一下
提示上传成功。
在文件列表中,找到上传图片的详情,点击
出现详情页面,在浏览器中输入该URL,如果能出现下载界面则证明能成功访问。
参考文档,根据参考文档在Java应用中使用OSS
3 在Java中使用OSS
安装依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
根据文档,写图片上传的Controller方法,通过swagger测试
注意:把代码中的 * 修改成自己账号对应的值
package com.sun.controller; import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream; @RestController
@RequestMapping("/oss")
@Api(value = "test oss", tags = "test oss")
public class OssTest { @PostMapping("/upload")
@ApiOperation("upload file test")
public void upload(MultipartFile file) {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "***";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "***";
String accessKeySecret = "***";
// 填写Bucket名称,例如examplebucket。
String bucketName = "***";
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
String objectName = "13213213exampleobject.jpg"; // 图片上传之后的名字
// 填写本地文件的完整路径,例如D:\\localpath\\example-resize.jpg。如果指定的本地文件存在会覆盖,不存在则新建。
String localPath = "C:\\Users\\admin\\Desktop\\Services\\weizhi1.jpg"; // 要上传的本地文件的地址 // 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try {
InputStream inputStream = new FileInputStream(localPath); // 图片输入流
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// 设置该属性可以返回response。如果不设置,则返回的response为空。
putObjectRequest.setProcess("true");
// 创建PutObject请求。
PutObjectResult result = ossClient.putObject(putObjectRequest);
// 如果上传成功,则返回200。
System.out.println(result.getResponse().getStatusCode());
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}启动项目,在swagger中测试
控制台输出200,表示上传图片操作成功。
登录管理台查看,文件确实上传成功了。
4 总结
在Java程序中使用OSS服务需要提供
endpoint、accessKeyId、accessKeySecret、bucketName
四个量。前三个用于创建ossclient对象,OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
,最后一个用于确定上传的图片放在哪个bucketname下边。需要先构造一个PutObjectRequest或者GetObjectRequest,然后通过ossclient调用putObject(put请求)/getObject(get请求)。
// 创建 put请求
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// 调用这个put请求,返回请求的result结果
PutObjectResult result = ossClient.putObject(putObjectRequest);
从零开始使用阿里云OSS服务(白嫖)的更多相关文章
- Python使用阿里云OSS服务
Python使用阿里云OSS服务 前言: 在远程搭建了一个平台,通过改远程平台进行数据的采集,需要将数据内容传送至本地进行处理:为了实现该功能,考虑了阿里云的OSS对象储存的服务. 40G包月只需1元 ...
- angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)
2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...
- ECS上nginx搭建反向代理通过内网访问阿里云OSS服务
对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...
- 物联网架构成长之路(18)-接阿里云OSS服务
1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...
- 阿里云OSS服务开通STS安全令牌
搭建直传服务需要完成以下准备工作: 开通OSS,并且创建Bucket. 开通STS服务. 登录 OSS管理控制台. 在OSS概览页中找到基础配置区域,单击 安全令牌,如下图所示: 进入到 安全令牌快捷 ...
- 阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)
分片上传(结合element-ui的upload组件实现自定义上传) async uploadFree(content){ let data = await this.getOssToken(); / ...
- 阿里云oss服务通用类
在webconfig中配置信息 <?xml version="1.0" encoding="utf-8"?><configuration> ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- thinkphp使用阿里云OSS最新SDK,文件部署
这文章是建立在你已经注册号阿里云的OSS,和创建好Bucket前提下: 其实阿里云的帮助与文档写的很详细,这里只说一下源码方式 1.phpsdk下载地址(摘自阿里云OSS的帮助与文档)(也有我自己下载 ...
- ThinkPHP5使用阿里云OSS图片上传
1.下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git) 2.在入口文件中加载OSS 3.config文件配置oss信息 ...
随机推荐
- 数据结构高阶--AVL(平衡二叉树)(图解+实现)
AVL树(平衡二叉树) 概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下.因此为了解决这个问题,两位俄罗斯的数学家发明 ...
- http转成https工具类
工具类代码如下: 点击查看代码 package com.astronaut.auction.modules.oss.utils; import org.apache.commons.collectio ...
- 【FAQ】申请Health Kit权限的常见问题及解答
华为运动健康服务(HUAWEI Health Kit)提供原子化数据开放,用户数据被授权获取后,应用可通过接口访问运动健康数据,对相关数据进行增.删.改.查等操作.这篇文章汇总了申请开通Health ...
- Jmeter 之 If 逻辑控制器
在Jmeter 中如要在某种场景中才执行特殊请求,此时可用If 逻辑控制器来实现. If 逻辑控制器顾名思义当符合某个条件时则执行,添加路径:测试计划->线程组->逻辑控制器->if ...
- 4、PageHelper分页查询
1.MyBatis的分页方式: 逻辑分页与物理分页 1.逻辑分页:使用MyBatis自带的RowBounds进行分页,是一次性查询很多数据,然后再在结果中检索分页的数据.这样做弊端是需要消耗大量的内存 ...
- 简述HashSet的扩容机制以及我们在重写equals()的时候为何会重写hashcode()
简述HashSet的扩容机制以及我们在重写equals()的时候为何会重写hashcode() 摘要:在背面试知识点的时候存在这样一条著名的面试题:我们重写equals()的时候为什么要重写has ...
- 常用的SQL命令:
丢弃指定的数据库,如果存在的话 DROP DATABASE IF EXISTS xuezi; 创建新的数据库 CREATE DATABASE xuezi; 进入数据库xuezi USE xue ...
- ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观
前言 最近一段时间,我使用golang开发了一个新的ORM库. 为了让这个库更好用,我比较研究了各语言的主流ORM库,发现有一些语言的ORM库确实很好用,而有另外一些语言的库那不是一般的难用. 然后我 ...
- java 入门与进阶P-6.3+P-6.4
包裹类型 对于基本数据类型,Java提供了对应的包裹(wrap)类型.这些包裹类型将一个基本数据类型的数据转换成对象的形式,从而使得它们可以像对象一样参与运算和传递.下表列出了基本数据类型所对应的包裹 ...
- vue中 beforeRouteLeave 生命周期函数
beforeRouteLeave需求描述在使用 element-UI的table 的时候,有这么一个需求.从一个页面切换到另一个页面,再切回来的时候,滚动条的位置不变. 需求:滚动浏览列表页,出现滚动 ...