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. Python3.4 远程操控电脑(开关机)

    import poplib import sys import smtplib from email.mime.text import MIMEText import os from email.he ...

  2. 转:Java 计算2个时间相差多少年,多少个月,多少天的几种方式

    日期比较对象 DayCompare 代码用到了  lombok ,如果不用,其实就是把getter / setter方法自己写一遍,还有构造方法. @Data @Builder public stat ...

  3. Universal-Image-Loader(android图片缓存)

    转载请注明http://write.blog.csdn.net/postedit?ref=toolbar 点击下载所需jar文件 具体资料整理请加群284568173自行下载pdf 项目介绍: And ...

  4. Android+Jquery Mobile学习系列(8)-保单/生日提醒功能

    其实这个App基本功能早已做完,并且交给老婆试用去了.但由于最近项目要保证稳定,所以持续加班,没有时间写最后一点内容,本节也就简单截图做个说明,不详细叙述实现方式.我会把代码上传到最后一章中,有兴趣的 ...

  5. spring boot测试

    今天在springside里试了spring boot,果然很方便,内置容器,不需要配置web.xml,简单几个文件就可以实现增删改查操作,一些配置如tomcat端口之类的直接写在applicatio ...

  6. POJ 2230 DFS

    题意: Bessie 最近做了农场看守,他每天晚上的工作就是巡视农场并且保证没有坏人破坏农场.从谷仓出发去巡视,并且最终回到谷仓. Bessie 视力不是很好,不能像其他农场的看守一样,对农场的每一条 ...

  7. IIS 7.0、IIS 7.5 和 IIS 8.0 使用的 HTTP 状态代码【转载自微软官方】

    HTTP 状态代码 本部分描述 IIS 7.0.IIS 7.5 和 IIS 8.0 使用的 HTTP 状态代码. 注意 本文不会列出 HTTP 规范中所述的每个可能的 HTTP 状态代码.本文只包括 ...

  8. angular js 正序倒叙

      <!DOCTYPE html>   <html lang="en">   <head>   <meta charset="U ...

  9. js点击事件 注册下一步实现代码

    点击事件: <body> <input type="button" id="btn1"/> <input type="b ...

  10. VHDL之concurrent之operators

    Using operators Operators can be used to implement any combinational circuit. However, as will becom ...