阿里云oss用做文件存储工具类
package com.fsk.fsksystem.util; import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.BucketInfo; public class OssUtil {
private static String endpoint = Constant.endpoint;
private static String accessKeyId = Constant.accessKeyId;
private static String accessKeySecret = Constant.accessKeySecret;
private static String bucketName = Constant.bucketName; /**
* 判断是否存在bucketName
* @return
*/
private static boolean hasBucket(OSSClient ossClient){
return ossClient.doesBucketExist(bucketName);
} /**
* 创建bucket实例
*/
private static void creatBucket(OSSClient ossClient){
if(!hasBucket(ossClient))
ossClient.createBucket(bucketName);
} /**
* 获取ossClient
* @return
*/
public static OSSClient ossClientInitialization(){
return new OSSClient(endpoint, accessKeyId, accessKeySecret);
} /**
* 释放ossClient资源
*/
private static void ossClientRelease(OSSClient ossClient){
ossClient.shutdown();
} /**
* 获取bucket信息
*/
private BucketInfo getBucketInfo(OSSClient ossClient){
return ossClient.getBucketInfo(bucketName);
} /**
* 文件上传并返回文件路径
* @param fileName
* @return
* @throws IOException
*/
public static String fileUpload(MultipartFile file) throws IOException{
OSSClient ossClient = ossClientInitialization();
creatBucket(ossClient);
String fileName = getFileName(file.getOriginalFilename());
// 上传文件流
InputStream inputStream = file.getInputStream();
ossClient.putObject(bucketName, fileName, inputStream);
String url = getUrl(ossClient,fileName);
ossClientRelease(ossClient);
return url;
} /**
* 获取附件上传保存到服务器的名称
* @param fileName 文件原始名称
* @return
*/
public static String getFileName(String fileName){
if(StringUtils.isBlank(fileName)){
return null;
}
if(fileName.lastIndexOf(".")>-){
fileName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
}else{
fileName = "."+fileName.toLowerCase();
}
Date date = new Date();
long t = date.getTime();
date = null;
return String.valueOf(t)+fileName;
} /**
* 获得url链接
*
* @param fileName
* @return
*/
public static String getUrl(OSSClient ossClient,String fileName) {
// 设置URL过期时间为10年 3600l* 1000*24*365*10
Date expiration = new Date(System.currentTimeMillis() + 3600L * * * * );
// 生成URL
URL url = ossClient.generatePresignedUrl(bucketName, fileName, expiration);
if (url != null) {
return url.toString();
}
return null;
}
}
阿里云oss用做文件存储工具类的更多相关文章
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- 阿里云OSS下载pdf文件,并在pdf文件上添加水印
代码: 兵马未动,粮草先行 作者: 传说中的汽水枪 如有错误,请留言指正,欢迎一起探讨. 转载请注明出处. 公司要求从阿里云OSS下载pdf文件并且需要添加水印. 因此这里总结一下. 首先添加了一个F ...
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
**TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...
- 使用阿里云OSS上传文件
本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...
- 如何获取阿里云OSS上每个文件夹的大小
原文 https://help.aliyun.com/document_detail/88458.html?spm=a2c4g.11186623.2.11.792462b15oU02q OSS文件按照 ...
- 阿里云OSS上传文件本地调试跨域问题解决
问题描述: 最近后台说为了提高上传效率,要前端直接上传文件到阿里云,而不经过后台.因为在阿里云服务器设置的允许源(region)为某个固定的域名下的源(例如*.cheche.com),直接在本地访问会 ...
- java/resteasy批量下载存储在阿里云OSS上的文件,并打包压缩
现在需要从oss上面批量下载文件并压缩打包,搜了很多相关博客,均是缺胳膊少腿,要么是和官网说法不一,要么就压缩包工具类不给出 官方API https://help.aliyun.com/documen ...
- 阿里云OSS 上传文件SDK
Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...
- 阿里云OSS上传文件demo
1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...
随机推荐
- python 003 os模块 example
import os for tmpdir in ('/tmp',r'C:/Users/Administrator/PycharmProjects/'): if os.path.isdir(tmpdir ...
- BNU 13259.Story of Tomisu Ghost 分解质因子
Story of Tomisu Ghost It is now 2150 AD and problem-setters are having a horrified time as the ghost ...
- poj 3662 Telephone Lines(最短路+二分)
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6973 Accepted: 2554 D ...
- 99.ext afteredit事件详解
转自:http://www.jcodecraeer.com/a/jquery_js_ajaxjishu/2012/0524/203.html 1 摘要 grid.on(afteredit,afterE ...
- Django day08 多表操作 (一) 多表模型创建
多表模型创建分析:1)作者表:一个作者有姓名和年龄2)作者信息表: 有作者就有信息,点击作者的名字可以查询他的电话和地址, 作者表对应作者信息表,所以他们之间是一对一对的关系3)出版社表: 出版社有对 ...
- c语言实现迪杰斯特拉算法(邻接表)
储存结构,结构体的定义:(权值w用于表示两点间路径的花费) typedef int Status; typedef struct ENode//图的邻接表定义 { int adjVex;//任意顶点u ...
- ccf 201803-4 棋局评估 (对抗搜索)
棋局评估 问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是“X”,Bob放的是“O”,Alice执先.当同一种棋子占据一行.一列 ...
- 生成jsp验证码的代码详解(servlet版)
package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; impo ...
- Combotree--别样的构建层级json字符串
1.先看效果 2.需要使用层级json格式,如: 3.先不要着急怎么去实现它,先来想想怎么用对象来描述它 4.代码 protected void Page_Load(object sender, Ev ...
- 日期Date和String/Long之间的转换
下面是关于日期的常见的几种类型转换: import java.text.ParseException; import java.text.SimpleDateFormat; import java.u ...