阿里云上传oss# oss上传
在我们的项目实战开发中经常会用到文件的上传和下载,但是存放到我们自己的服务器上又会很占空间,而且访问可能也会收到限制,所以说使用其他远程服务存储文件是一个很有必要的选择,我们项目因为买了阿里云的服务,所以文件的上传和下载就使用了阿里云的。
文件上传时,阿里云提供了java上传,web直传等方式,我们为了省后端到前端访问的流量,就直接使用web前端直传,为了安全后端提供前端一个安全的token以及需要的密钥等等。
1.先配置好我们公司的密钥和ID以及阿里云公用的服务等, 使用的是sts方式
public AssumeRoleResponse StsToken() {
// 阿里云API的密钥Access Key ID
String endpoint = "sts.cn-beijing.aliyuncs.com"; //使用的是sts,所以使用的域名是sts的域名
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "自己的key";
String accessKeySecret = "自己的sercert";
String roleArn = "角色";
String roleSessionName = "角色名字(可以随意起名字)";
String policy = "权限";
try {
//构造default profile(参数留空,无需添加Region ID)
IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);
//用profile构造client
DefaultAcsClient client = new DefaultAcsClient(profile);
final AssumeRoleRequest request = new AssumeRoleRequest();
request.setSysEndpoint(endpoint);
request.setSysMethod(MethodType.POST);
request.setRoleArn(roleArn);
request.setRoleSessionName(roleSessionName);
request.setPolicy(policy); // Optional
request.setDurationSeconds(3600L); // 设置凭证有效时间 1小时
final AssumeRoleResponse response = client.getAcsResponse(request);
return response;
} catch (com.aliyuncs.exceptions.ClientException e) {
e.printStackTrace();
//logger.info("获取stsToken失败。。[{}]", e);
}
return null;
}
这就是获取临时凭证的方法。
- 返给前端想要的token以及key和id,bucket名字
@Autowired
OssUtil ossUtil;
//上传文件到阿里云OSS服务器
@RequestMapping(value = "/fileUploadSTS")
@ResponseBody
private void fileUploadSTS(HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
log.info("oss文