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用做文件存储工具类的更多相关文章

  1. 关于 tp5.0 阿里云 oss 上传文件操作

    tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题  应该是移动后的路劲(相对于服 ...

  2. 阿里云OSS下载pdf文件,并在pdf文件上添加水印

    代码: 兵马未动,粮草先行 作者: 传说中的汽水枪 如有错误,请留言指正,欢迎一起探讨. 转载请注明出处. 公司要求从阿里云OSS下载pdf文件并且需要添加水印. 因此这里总结一下. 首先添加了一个F ...

  3. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片

    **TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...

  4. 使用阿里云OSS上传文件

    本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...

  5. 如何获取阿里云OSS上每个文件夹的大小

    原文 https://help.aliyun.com/document_detail/88458.html?spm=a2c4g.11186623.2.11.792462b15oU02q OSS文件按照 ...

  6. 阿里云OSS上传文件本地调试跨域问题解决

    问题描述: 最近后台说为了提高上传效率,要前端直接上传文件到阿里云,而不经过后台.因为在阿里云服务器设置的允许源(region)为某个固定的域名下的源(例如*.cheche.com),直接在本地访问会 ...

  7. java/resteasy批量下载存储在阿里云OSS上的文件,并打包压缩

    现在需要从oss上面批量下载文件并压缩打包,搜了很多相关博客,均是缺胳膊少腿,要么是和官网说法不一,要么就压缩包工具类不给出 官方API https://help.aliyun.com/documen ...

  8. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  9. 阿里云OSS上传文件demo

    1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...

随机推荐

  1. 2015 年度新增开源软件排名TOP100

    本榜单包括 2015 年开源中国新收录的 5977 款开源软件中,依据软件本身的关注度.活跃程度进行排名前 100 名的软件.从这份榜单中也许能够了解到最新业界的趋势. 1.SwitchyOmega ...

  2. hdu3371 Connect the Cities (MST)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力

    A. Vasya and Football   Vasya has started watching football games. He has learned that for some foul ...

  4. HDU 5533/ 2015长春区域 G.Dancing Stars on Me 暴力

    Dancing Stars on Me Problem Description The sky was brushed clean by the wind and the stars were col ...

  5. commons-fileupload上传文件(1)

    近期,写一个上传图片的功能.于是用到commons-fileupload这个组件.提过form提交表单到后台(这里没实用到structs框架).在后台List pl = dfu.parseReques ...

  6. luogu2154 [SDOI2009] 虔诚的墓主人 离散化 树状数组 扫描线

    题目大意 公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.一块墓地的虔诚度是指以这块墓地为中心的十字架的数目,一个十字架可以看成中间是墓地,墓地的正上.正 ...

  7. CodeForces - 743D Chloe and pleasant prizes

    Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  8. JDK多任务执行框架(Executor框架)

    Executor的常用方法 为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效地进行线程控制.它们都在java.util.concurrent包中,是JDK开发包的核心. ...

  9. Cookie、Token与Session介绍(非原创)

    文章大纲 一.Cookie介绍二.Token介绍三.Session介绍四.Token.Cookie与Session比较五.参考文章   一.Cookie介绍 1. Cookie是什么 cookie机制 ...

  10. Java中数组要点总结

    1.数组是基本数据类型和字符串类型的容器(引用数据类型),而集合是类数据类型的容器: 2.数组定义的格式: (1)一般格式: 元素类型[] 数组名 = new 元素类型[元素个数或者数组长度]: 其中 ...