一篇看懂OSS图片视频上传

简介

图片视频上传存储的方式有很多种,比如存在项目中、存在本地、存在服务器、放入第三方例如gitee、oss等,但在公司一般的业务中不会已前三者的方式存储。
问题:

  1. 存在项目中会很臃肿(文件大小不用说,上传服务器都懂);
  2. 存在本地,如果上传到服务器上也就获取不到视频图片了;
  3. 直接存在服务器中也是可以的,但是没试过

因为自己需求做朋友圈的动态发布,所以用整合OSS存储图片和视频充当笔记(OSS是收费的,有兴趣老表可以把图片存到gitee也可以,因为gitee是免费,可以用HttpClient读写)
gitee API : https://gitee.com/api/v5/swagger#/getV5ReposOwnerRepoStargazers?ex=no

SpringBoot整合OSS

pom.xml

   <!--   oss     --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.3</version></dependency>

application.yml

#swagger
lanys:swagger:title: 牟某公司description: 牟某公司termsOfServiceUrl: https://eurasia.plus/swagger-ui.htmlContactName: xxxContactUrl: https://eurasia.plus/swagger-ui.htmlContactEmail: 1090613735@qq.comversion: 1.0aliyun:access_key_id: 拿自己OSS对应的数据access_key_secret: 拿自己OSS对应的数据bucket: 拿自己OSS对应的数据endpoint: 拿自己OSS对应的数据

AliyunConfig

/*** @author lanys* @Description:* @date 2/7/2021 下午3:12*/@Configuration
@ConfigurationProperties(prefix = "lanys.aliyun")
@Data
public class AliyunConfig {private String access_key_id;private String access_key_secret;private String endpoint;private String bucket;@Beanpublic OSS oSSClient() {return new OSSClient(endpoint, access_key_id, access_key_secret);}
}

Controller

    @Autowiredprivate UpLoadFileUtil upLoadFileUtil;@ApiOperation(value = "上传图片视频")@PostMapping("/upload")@ResponseBodypublic List<OSSObjectSummary> create(MultipartFile[] upload) throws Exception {upLoadFileUtil.upLoadVideos(upload);return Result.success();}

UpLoadFileUtil(工具)

/*** @author lanys* @Description:* @date 2/7/2021 上午10:36*/
@Component
@Slf4j
public class UpLoadFileUtil {/*** 图片格式*/private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg",".jpeg", ".gif", ".png"};private static final String[] VIDEOS = new String[]{".mp4"};@Autowiredprivate OSS ossClient;@Autowiredprivate AliyunConfig aliyunConfig;/*** 图像上传* @param uploadFile 图像流处理* @return* @throws IOException*/public  Boolean UpLoadImage(MultipartFile[] uploadFile) throws IOException {// 校验图片格式boolean isLegal = false;log.info("----校验图片格式---");for (MultipartFile multipartFile : uploadFile) {// 校验图片格式for (String type : IMAGE_TYPE) {if (StringUtils.endsWithIgnoreCase(multipartFile.getOriginalFilename(), type)) {isLegal = true;break;}}}if (!isLegal){log.info("----图片格式有误---");return false;}for (MultipartFile multipartFile: uploadFile) {//获取图片名称String originalFilename = multipartFile.getOriginalFilename();String filePath = getFilePath(originalFilename);System.out.println(filePath);try {ossClient.putObject(aliyunConfig.getBucket(), filePath, newByteArrayInputStream(multipartFile.getBytes()));log.info("--------图片上传成功--------");} catch (Exception e) {e.printStackTrace();log.info("上传失败");return false;}}return true;}/*** 视频上传* @param uploadFile 视频流处理* @return* @throws IOException*/public Boolean upLoadVideos(MultipartFile[] uploadFile) throws IOException {// 校验图片格式boolean isLegal = false;log.info("----校验图片格式---");for (MultipartFile multipartFile : uploadFile) {// 校验图片格式for (String type : VIDEOS) {if (StringUtils.endsWithIgnoreCase(multipartFile.getOriginalFilename(), type)) {isLegal = true;break;}}}if (!isLegal){log.info("----视频格式有误---");return false;}for (MultipartFile multipartFile: uploadFile) {//获取图片名称String originalFilename = multipartFile.getOriginalFilename();String filePath = getFilePath(originalFilename);System.out.println(filePath);try {ossClient.putObject(aliyunConfig.getBucket(), filePath, newByteArrayInputStream(multipartFile.getBytes()));log.info("--------视频上传成功--------");} catch (Exception e) {e.printStackTrace();log.info("上传失败");return false;}}return true;}/*** 生成路径以及文件名* @param sourceFileName* @return*/private String getFilePath(String sourceFileName) {DateTime dateTime = new DateTime();return "uploads/dynamic/pictures/" + dateTime.toString("yyyy") + dateTime.toString("MM") + dateTime.toString("dd") + "/" + System.currentTimeMillis() +RandomUtils.nextInt(100, 9999) + "." +StringUtils.substringAfterLast(sourceFileName, ".");}
}

留了个坑,虽然图片和视频已经上传OSS中,但是做视频截取图片javacv及没有拼接路径,然后存储到数据库中,有兴趣可以自己动手。

OSS拼接的格式:

aliyun:access_key_id: LTAI5tR3MemYvQMWpyy2spT2access_key_secret: W0WfKE8WD3LZ8mQ2x5PMTZp820AFZ1##桶bucket: id2endpoint: id3
    /*** 生成路径以及文件名* @param sourceFileName* @return*/private String getFilePath(String sourceFileName) {DateTime dateTime = new DateTime();return "uploads/dynamic/pictures/" + dateTime.toString("yyyy") + dateTime.toString("MM") + dateTime.toString("dd") + "/" + System.currentTimeMillis() +RandomUtils.nextInt(100, 9999) + "." +StringUtils.substringAfterLast(sourceFileName, ".");}

对照配置文件,格式就是:

https://id2.id3/生成路径以及文件名

例子:

http://resource.develop.hulimedib.com/uploads/dynamic/pictures/20200922/c5cfe146b656a9aa242993ea335de60d.PNG

总结:

整合的整个过程很简单,依赖+配置文件id,key等,配置bean带入id+key等就可以操作OSS中的文件读取。

快速上手OSS图片视频上传相关推荐

  1. wangeditor自定义图片视频上传

    wangeditor自定义图片视频上传 完整代码 <template><div style="border: 1px solid #ccc;height: 100%;&qu ...

  2. **关于阿里云oss图片批量上传问题解析**

    关于阿里云oss图片批量上传问题解析 背景 最近在项目开发过程中遇到的问题,消耗了比较久的时间,过程曲折,虽然最终达到目的,但是鉴于各种常用的云数据在对象存储方面大同小异,所以记录一下. 理一下思路: ...

  3. uniapp做小程序的图片(视频)上传的组件封装

    最近在做小程序,最后想试试新不同的技术,所以选择了用uniapp做小程序. 要求实现多张图片的上传 ,可以限制图片上传的数量,图片预览,多次使用对图片的上传顺序排序 <template>& ...

  4. summernote禁止图片视频上传

    默认的summernote是允许图片上传和视频上传的,有一些业务上,并不需要图片上传和视频上传,只是文字相关的处理. 给summernote设置toolbar即可. $('.summernote'). ...

  5. 阿里云OSS图片的上传与展示:案例

    前提: 开通对象存储OSS 创建存储空间 思路: 后端上传图片到OSS两种方式: 通过图片的绝对路径上传,但是浏览器为了安全考虑,无法获得本地图片的绝对路径[也可以,但没必要] 通过图片的Base64 ...

  6. Java基于阿里云OSS实现视频上传

    file类型的input输入框获得value时可使用: <input type="file" name="videoPath" id="vv&q ...

  7. wangeditor图片视频上传配置

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. html七牛云图片文件上传,使用Js将文件图片视频上传到七牛云详细教程-Fun言

    前言 因为项目需要,需要将一些较大文件上传到七牛云,以前都是通过数据流上传到服务端,然后在服务端进行上传操作,因为以前文件都很小所以无所谓,但是要是几百M的文件就不行了,所以就采用前端js直接上传到七 ...

  9. 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台...

    版权声明:本文由白宦成原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/community/article/108597001488193402 来源:腾云阁  ...

  10. 阿里云视频点播(VOD)服务的视频上传JAVA代码开发(上传)

    一. 设计需求 使用阿里云视频点播服务对客户端上传的视频进行转码处理, 并存储到本地. 支持海外用户的大视频文件上传. 解决海外上传的有无问题. 二. 实现思路 客户端向服务端请求凭证, 获取上传地址 ...

最新文章

  1. Scala 中的函数式编程基础(一)
  2. 同域名下不同端口cookie问题
  3. VTK:Medical之GenerateCubesFromLabels
  4. org.hibernate.InvalidMappingException: Could not parse mapping document from resource
  5. 数据类型的转换小结 c# 1614092651
  6. CV卷得厉害,研究机器学习还能做什么?
  7. matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?
  8. QQ群排名霸屏:快速上排名方法
  9. 计算机局域网访问密码设置,win10系统设置局域网访问需要密码的详细办法
  10. 8188gu驱动和su realtek_RTL8188CU 和RTL8188SU有什么区别,哪个好,谢谢
  11. 科技SCI论文正体斜体规定
  12. 小程序商城后台技术选型
  13. Linux ffs()函数
  14. Ghost for Linux 出色的硬盘对拷工具(转)
  15. Jieba库基本用法
  16. matlab教师考试安排,2018教师资格证考试科目及日程安排
  17. 算法细节系列(20):Word Ladder系列
  18. 苹果又被荷兰监管机构罚款500万欧元 累计已达4500万
  19. qq号的正则表达式html,JavaScript中的正则表达式使用及验证qq号码的正则
  20. i219v微星 驱动_Intel英特尔I217/I218/I219系列网卡驱动下载

热门文章

  1. win10系统matlab不能卸载不了,win10系统matlab打不开无法运行的方案
  2. 谷歌翻译失效,解决网页谷歌翻译的问题-只能解决页面翻译
  3. 使用Selenium实现直播平台的自动刷屏
  4. 数据洞察医药电商,解析医药电商行业现状及发展趋势
  5. Datawhale组队学习开源内容汇总
  6. VS2019官方下载地址
  7. windows10服务器iis发布网站,win10系统+iis7发布网站或服务的详细办法
  8. 人脸门禁系统解决方案及应用
  9. WMB Compute 节点访问数据库
  10. Solidity函数中pure、view、constant的用法