--pom.xml加入阿里OSS存储依赖
<!--阿里云OSS存储-->
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.3</version>
</dependency>
--配置阿里云oss相关常量参数
/** @Author: xxxx   @Description: ${description} 阿里云 constant @Date: 2020/11/26 14:15 */
public class AliyunOSSConfigConstant {// 私有构造方法 禁止该类初始化private AliyunOSSConfigConstant() {}// 仓库名称public static final String BUCKET_NAME ="your backetname";// 地域节点public static final String END_POINT ="your endpoint address";// AccessKey ID 阿里云AccessKeypublic static final String AccessKey_ID ="your accesskeyid";// Access Key Secret 阿里云Secretpublic static final String AccessKey_Secret ="your acesskeySecret";
}
--编写操作oss的工具类
/** @Author: xxxx  @Description: ${description}阿里云OSS工具类 @Date: 2020/11/26 14:13 */
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import com.stdl.chargingpile.config.constant.Constants;
import com.stdl.chargingpile.service.OrderService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.URL;
import java.util.Date;
import java.util.List;
import java.util.Random;public class AliyunOSSUtil {@Autowired private OrderService orderService2;String  filedir="img/";private static final Logger logger = LoggerFactory.getLogger(AliyunOSSUtil.class);/*** 删除一个Bucket和其中的Objects** @param client* @param bucketName* @throws OSSException* @throws ClientException*/public static void deleteBucket(OSSClient client, String bucketName)throws OSSException, ClientException {ObjectListing ObjectListing = client.listObjects(bucketName);List<OSSObjectSummary> listDeletes = ObjectListing.getObjectSummaries();for (int i = 0; i < listDeletes.size(); i++) {String objectName = listDeletes.get(i).getKey();// 如果不为空,先删除bucket下的文件client.deleteObject(bucketName, objectName);}client.deleteBucket(bucketName);}/*** 把Bucket设置为所有人可读** @param client* @param bucketName* @throws OSSException* @throws ClientException*/public static void setBucketPublicReadable(OSSClient client, String bucketName)throws OSSException, ClientException {// 创建bucketclient.createBucket(bucketName);// 设置bucket的访问权限,public-read-write权限client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);}/*** 上传文件** @param client* @param bucketName* @param key* @param filename* @param contentType default "image/gif"* @throws OSSException* @throws ClientException* @throws FileNotFoundException*/public static String uploadFile(OSSClient client, String bucketName, String key, String filename, String contentType)throws OSSException, ClientException, FileNotFoundException {File file = new File(filename);contentType = contentType == null ? "image/gif" : contentType;ObjectMetadata objectMeta = new ObjectMetadata();objectMeta.setContentLength(file.length());objectMeta.setContentType(contentType);InputStream input = new FileInputStream(file);PutObjectResult result = client.putObject(bucketName, key, input, objectMeta);return result.getETag();}/*** 下载文件** @param client* @param bucketName* @param key* @param filename* @throws OSSException* @throws ClientException*/public static void downloadFile(OSSClient client, String bucketName, String key, String filename)throws OSSException, ClientException {client.getObject(new GetObjectRequest(bucketName, key), new File(filename));}/*** 创建一个文件夹** @param client* @param bucketName* @param folderPah*/public static void createFolder(OSSClient client, String bucketName, String folderPah) {ObjectMetadata objectMeta = new ObjectMetadata();byte[] buffer = new byte[0];ByteArrayInputStream in = new ByteArrayInputStream(buffer);objectMeta.setContentLength(0);try {client.putObject(bucketName, folderPah, in, objectMeta);} catch (Exception e) {e.printStackTrace();} finally {try {in.close();} catch (IOException e) {e.printStackTrace();}}}/*** 删除一个OSS文件对象** @param client* @param bucketName* @param key*/public static void deleteObject(OSSClient client, String bucketName, String key) {client.deleteObject(bucketName, key);}public  static String  reFundPath(String mechNo){String certpath = TMP_DIR  + File.separator + mechNo;boolean dirs = createDir(certpath);if(dirs==true){OSSClient client =new OSSClient(Constants.endpoint, accessKeyId, accessKeySecret);downloadFile(client,Constants.bucket,mechNo+"/apiclient_cert.p12",certpath + File.separator + "apiclient_cert.p12");}System.out.println(certpath + File.separator + "apiclient_cert.p12");return certpath;}/*** 获取系统临时目录*/private static final String TMP_DIR= System.getProperty("java.io.tmpdir");public static boolean createDir(String destDirName) {File dir = new File(destDirName);if (dir.exists()) {System.out.println("创建目录" + destDirName + "目标目录已经存在,无需重新创建");return true;}if (!destDirName.endsWith(File.separator)) {destDirName = destDirName + File.separator;}// 创建目录if (dir.mkdirs()) {System.out.println("创建目录" + destDirName + "成功!");return true;} else {System.out.println("创建目录" + destDirName + "失败!");return false;}}/**** 上传图片* @param file* @return*/public String uploadImg2Oss(MultipartFile file) {if (file.getSize() > 1024 * 1024 *20) {return "图片太大";//RestResultGenerator.createErrorResult(ResponseEnum.PHOTO_TOO_MAX);}String originalFilename = file.getOriginalFilename();String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();Random random = new Random();String name = random.nextInt(10000) + System.currentTimeMillis() + substring;try {InputStream inputStream = file.getInputStream();this.uploadFile2OSS(inputStream, name);return name;//RestResultGenerator.createSuccessResult(name);} catch (Exception e) {return "上传失败";//RestResultGenerator.createErrorResult(ResponseEnum.PHOTO_UPLOAD);}}/*** 上传图片获取fileUrl* @param instream* @param fileName* @return*/private String uploadFile2OSS(InputStream instream, String fileName) {String ret = "";try {//创建上传Object的MetadataObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentLength(instream.available());objectMetadata.setCacheControl("no-cache");objectMetadata.setHeader("Pragma", "no-cache");objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));objectMetadata.setContentDisposition("inline;filename=" + fileName);//上传文件OSSClient ossClient = new OSSClient(Constants.endpoint, accessKeyId, accessKeySecret);PutObjectResult putResult = ossClient.putObject(bucket, filedir + fileName, instream, objectMetadata);ret = putResult.getETag();} catch (IOException e) {logger.error(e.getMessage(), e);} finally {try {if (instream != null) {instream.close();}} catch (IOException e) {e.printStackTrace();}}return ret;}public static String getContentType(String FilenameExtension) {if (FilenameExtension.equalsIgnoreCase(".bmp")) {return "image/bmp";}if (FilenameExtension.equalsIgnoreCase(".gif")) {return "image/gif";}if (FilenameExtension.equalsIgnoreCase(".jpeg") ||FilenameExtension.equalsIgnoreCase(".jpg") ||FilenameExtension.equalsIgnoreCase(".png")) {return "image/jpg";}if (FilenameExtension.equalsIgnoreCase(".html")) {return "text/html";}if (FilenameExtension.equalsIgnoreCase(".txt")) {return "text/plain";}if (FilenameExtension.equalsIgnoreCase(".vsd")) {return "application/vnd.visio";}if (FilenameExtension.equalsIgnoreCase(".pptx") ||FilenameExtension.equalsIgnoreCase(".ppt")) {return "application/vnd.ms-powerpoint";}if (FilenameExtension.equalsIgnoreCase(".docx") ||FilenameExtension.equalsIgnoreCase(".doc")) {return "application/msword";}if (FilenameExtension.equalsIgnoreCase(".xml")) {return "text/xml";}return "image/jpg";}/*** 获取图片路径* @param fileUrl* @return*/public String getImgUrl(String fileUrl) {if (!StringUtils.isEmpty(fileUrl)) {String[] split = fileUrl.split("/");String url = this.getUrl(this.filedir + split[split.length - 1]);return url;}return null;}/*** 获得url链接** @param key* @return*/public String getUrl(String key) {// 设置URL过期时间为10年 3600l* 1000*24*365*10Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 365 * 10);// 生成URLOSSClient ossClient = new OSSClient(Constants.endpoint, accessKeyId, accessKeySecret);URL url = ossClient.generatePresignedUrl(bucket, key, expiration);if (url != null) {return url.toString();}return null;}/*** 多图片上传* @param fileList* @return*/public String checkList(List<MultipartFile> fileList) {String fileUrl = "";String str = "";String photoUrl = "";for(int i = 0;i< fileList.size();i++){fileUrl = uploadImg2Oss(fileList.get(i));str = getImgUrl(fileUrl);if(i == 0){photoUrl = str;}else {photoUrl += "," + str;}}return photoUrl.trim();}/*** 单个图片上传* @param file* @return*/public String checkImage(MultipartFile file){String fileUrl = uploadImg2Oss(file);String str = getImgUrl(fileUrl);return str.trim();}
}

以上就是操作阿里OSS的相关方法,供大家学习参考交流~!

利用阿里云OSS对文件进行存储,上传等操作相关推荐

  1. 阿里云OSS域名配置及简单上传

    目前开发系统,附件文件一般都会使用第三方的存储空间来保存,一方面是为了开发者提供便利,另一方可以减轻系统的访问压力,下面介绍一下阿里云的OSS的一些简单配置和使用. 一.阿里云OSS配置 前提:你需要 ...

  2. filezilla:阿里云 win10 服务器文件传输(上传和下载)的配置教程

    报错截图: (截图省略)因为基本上都是下面的问题. 下面的问题又和本文解决办法无关,罗列出来仅仅是告诉大家,这个基本上都可以忽视. 真正解决问题的办法:还是filezillad 远程链接时的定义设置选 ...

  3. 使用阿里云OSS完成文件的上传样例

    使用阿里云OSS完成文件的上传 基础条件: 提前注册过阿里云账户 账户里有余额(文件上传按流量收费) 开通过OSS的基础服务 如果有以上基础条件不满足的小伙伴,去度娘了解一下. 前言 有过基础的小伙伴 ...

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

    概述场景 文件上传,是程序开发中必须会使用到的一个功能,比如: 添加商品,用户头像,文章封面等需求 富文本编辑(插件文件上传) 文件上传的原理是什么? 我们为什么要实现文件上传,其实就要共享资源,大家 ...

  5. 阿里云OSS视频文件迁移视频点播,并导出媒资excel表

    阿里云OSS视频文件迁移视频点播,并导出媒资excel表 一 介绍 1 OSS 是什么 2 视频点播是什么 3 制作背景 阿里云磁盘(读文件) 阿里云点播(写文件) 阿里云sdk导入依赖 二 流程 1 ...

  6. 小程序配置阿里云OSS下载文件,在请求头里配置生成强制下载链接,(拿到下载链接可以下载文件至本地)

    小程序配置阿里云OSS下载文件,在请求头里配置生成强制下载链接,(拿到下载链接可以下载文件至本地)(Win10电脑开发环境)**这里只说明小程序端问题**<菜鸡总结大神勿喷!蟹蟹~> 大体 ...

  7. springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放

    视频点播(ApsaraVideo VoD,简称VoD)是集视频采集.编辑.上传.媒体资源管理.自动化转码处理(窄带高清™).视频审核分析.分发加速于一体的一站式音视频点播解决方案. 阿里云视频点播服务 ...

  8. Java调用阿里云OSS下载文件

    1.准备工作 具体细节参考Java调用阿里云oss_迷途知返-的博客-CSDN博客_java使用阿里云oss. 2.项目需求 我这里只需要根据文件名称把文件从oss下载下来即可,参考阿里云官网指导:下 ...

  9. 阿里云oss(图片存储)--fastdfs (视频存储)

    技术点总结:  注入OSSClient和配置类,文件格式的判断------通过入参获取到图片的文件名称,------ 在通过图片文件名称获取到自定义新的文件图片的名称----调用putObject() ...

最新文章

  1. Android Studio:创建类时,添加作者名和日期
  2. PyQt5 技术篇-透明窗口设置方法,窗口透明度的设置
  3. Win32 API、VC++、C# 文件操作函数的初步比较
  4. linux重启查看日志及历史记录 查询原因
  5. git push代码出现push rejected错误
  6. 剑英的区块链学习手记(一)
  7. 多线程join,强制执行完
  8. 解决Some index files failed to download.They have been ignored, or old ones used instead报错
  9. Python 模块学习
  10. ctfshow-WEB-web4
  11. ASP.NET动态加载用户控件的页面生成过程
  12. 如何恢复快捷方式上的小箭头
  13. 最新emoji表情代码大全_2019七夕节最新撩妹句子大全,浪漫的七夕节表情包集锦...
  14. bios 昂达h61c_Onda昂达主板BIOS,ONDA昂达H61N全固版(ver 3.00)主板BIOS 3.02版,主板BIOS,硬件驱动下载...
  15. resnet152训练_ResNet改进版来了!可训练网络超过3000层!相同深度精度更高
  16. 新版火狐打开时会自动开启360导航
  17. 基于Android的个人时间管理设计与开发
  18. Longest Increasing Subsequence
  19. 【论文整理】风格迁移中格拉姆矩阵(Gram Matrix)的使用
  20. [重要笔记]网络信号在网线和集线器中传输

热门文章

  1. python综合管理系统_Python-20 (信息系统-框架/循环/增删/综合应用)
  2. STL源码剖析 Set相关算法 并集 set_union|交集 set_intersection|差集 set_difference |对称差集 set_symmetric_difference
  3. 操作系统 内存管理相关知识
  4. 将读写锁放到共享内存中,实现进程之间对数据的读写访问控制
  5. 4G发牌或提早 电信联通面临艰难抉择
  6. linux :Docker 方式 安装 zookeeper、阿里服务器上 Docker 运行 zookeeper
  7. FreeSql (三)实体特性
  8. 【Android开发】NDK开发(1)-Hello World!
  9. Linux 共享内存详解一
  10. Python爬虫:一些常用的爬虫技巧总结