要想使用阿里云,全提是先开通阿里云的功能

查看oss的配置内容

先应用oss的依赖

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

来一波阿里云工具类

package com.lza.util;
import org.joda.time.DateTime;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.Bucket;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.UUID;/*** 阿里云客户端*/public class AliOSSClientUtil {/** 日志 */public static Logger logger = LoggerFactory.getLogger(AliOSSClientUtil.class);/** 阿里云API的密钥Access Key ID */public static String accessKeyId ="你的配置";/** 阿里云API的密钥Access Key Secret */public static String accessKeySecret="你的配置";/** 阿里云API的内或外网域名 */public static String endpoint="你的配置";public static String bucketName="你的配置";/** 阿里云短信签名名称 *//*private static String signName = "*****";*//** 阿里云短信模板代码 *//*private static String templateCode = "*****";@Value("{ali.folder}")private String folder;*//*** 获取阿里云OSS客户端对象** @return ossClient*/public static  OSSClient getOSSClient() {return new OSSClient(endpoint, accessKeyId, accessKeySecret);}/*** 创建存储空间** @param ossClient OSS连接* @param bucketName 存储空间* @return*/public static String createBucketName(OSSClient ossClient, String bucketName) {// 存储空间final String bucketNames = bucketName;if (!ossClient.doesBucketExist(bucketName)) {// 创建存储空间Bucket bucket = ossClient.createBucket(bucketName);logger.info("创建存储空间成功");return bucket.getName();}return bucketNames;}/*** 删除存储空间buckName** @param ossClient oss对象* @param bucketName 存储空间*/public static void deleteBucket(OSSClient ossClient, String bucketName) {ossClient.deleteBucket(bucketName);logger.info("删除" + bucketName + "Bucket成功");}/*** 根据key删除OSS服务器上的文件** @param ossClient oss连接* @param bucketName 存储空间* @param folder 模拟文件夹名* @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"*/public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key) {ossClient.deleteObject(bucketName, folder + key);logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");}/*** 创建模拟文件夹** @param ossClient oss连接* @param bucketName 存储空间* @param folder 模拟文件夹名如* @return 文件夹名*/public static   String createFolder(OSSClient ossClient, String bucketName, String folder) {// 文件夹名final String keySuffixWithSlash = folder;// 判断文件夹是否存在,不存在则创建if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {// 创建文件夹ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));logger.info("创建文件夹成功");// 得到文件夹名OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);String fileDir = object.getKey();return fileDir;}return keySuffixWithSlash;}/*** 上传图片至OSS** @param ossClient oss连接* @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)* @param bucketName 存储空间* @param folder 模拟文件夹名* @return String 返回文件url*/public static   String upload(OSSClient ossClient, File file, String bucketName, String folder) {String resultStr = null;try {InputStream is = new FileInputStream(file);String fileName = file.getName();ossClient.putObject(bucketName, folder + fileName, is);resultStr = "http://"+endpoint+"/"+folder+fileName;} catch (Exception e) {e.printStackTrace();logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);}return resultStr;}/*** 上传图片至OSS** @param*** @return String 返回文件url*/public static   String uploadVideo(MultipartFile file) {//上传地址String uploadUrl=null;System.out.println(bucketName+endpoint+accessKeyId+accessKeySecret);try {//创建实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);System.out.println("ossClient"+ossClient);System.out.println("oss:"+ossClient);//判断bucketName是否存在if(!ossClient.doesBucketExist(bucketName)){//创建bucketossClient.createBucket(bucketName);//设置bucket属性ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);}//获取上传的文件流InputStream inputStream=file.getInputStream();//构建日期的文件夹路径 avatar/2021/9/12/文件名String datePath= new DateTime().toString("yyy/MM/dd");//获取上传文件的全名称String original = file.getOriginalFilename();//获取uuid 随机生成的,每次都不同 9c649622-7b7b-4fca-ba74-daae5ea4b3c8 变为9c6496227b7b4fcaba74daae5ea4b3c8String fileName = UUID.randomUUID().toString().replace("-", "");//获取文件路径的扩展名 meizi.jpg  就应该是jpgString fileType = original.substring(original.lastIndexOf("."));//并接文件名称 9c6496227b7b4fcaba74daae5ea4b3c8.jpgString newName=fileName+fileType;//生成文件夹   avatar/2021/9/12/9c6496227b7b4fcaba74daae5ea4b3c8.jpgfileName= datePath+"/"+newName;//每次上传的文字都是不能相同的---uuid方法 文件格式:yyyy/MM/dd+uuid//要实现图片预览效果,还需要设置//1.设置文件的ACL(权限),要么是公共读,要么是公共读写//2.一定要设置文本类型(image/jpg)ObjectMetadata objectMetadata=new ObjectMetadata();//设置公共读权限objectMetadata.setObjectAcl(CannedAccessControlList.PublicRead);objectMetadata.setContentType(getContentType(fileType));ossClient.putObject(bucketName, fileName, file.getInputStream(),objectMetadata);// 关闭OSSClient。ossClient.shutdown();//默认十年不过期Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);//获取在线访问的url bucket名称  文件名   过期时间uploadUrl = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();}catch (Exception e){e.printStackTrace();}//返回数据是关键如果你直接返回uploadUrl那么后面就会出现很多参数,所以要进行截取System.out.println(uploadUrl);return uploadUrl.substring(0,uploadUrl.indexOf("?"));}/*** 通过文件名判断并获取OSS服务文件上传时文件的contentType** @param fileName 文件名* @return 文件的contentType*/public static String getContentType(String fileName) {// 文件的后缀名String FilenameExtension = fileName.substring(fileName.lastIndexOf("."));if (FilenameExtension.equalsIgnoreCase(".pdf")) {return "application/pdf";}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")){return "application/msword";}if (FilenameExtension.equalsIgnoreCase(".xml")) {return "text/xml";}if (FilenameExtension.equalsIgnoreCase(".mp4")) {//MP4格式return "video/mp4";}return "image/jpg";}/**//*** 阿里云短信验证码* @return*//*public static String smsCode(String phone){DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();String smsCode = RandomUtil.randomNumbers(6);request.setSysMethod(MethodType.POST);request.setSysVersion("2017-05-25");request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam","{code:"+smsCode+"}");try {CommonResponse response = client.getCommonResponse(request);String data = response.getData();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return smsCode;}*/
}

运行实例,上传一波视频,这个根据你的接口而定,参数是MultipartFile file

 //上传视频@PostMapping("uploadVideos")@RequiredTokenpublic ResponseBean upload(MultipartFile file, Video video, HttpServletRequest request) throws IOException {//在请求头中获取user信息User user = (User) request.getAttribute("user");//获取用户的idvideo.setUid(user.getId());/*  //获取分类idvideo.setCategoryId(category_id);*///修改和发布时间Date date=new Date();video.setCreatedAt(date);video.setUpdatedAt(date);**//上传阿里云String url = AliOSSClientUtil.uploadVideo(file);//静态方法//阿里云oss截取视频中某一帧作为封面String cover = url + "?x-oss-process=video/snapshot,t_30000,f_jpg,w_0,h_0,m_fast,ar_auto";
//6.设置视频信息video.setCover(cover);//设置视频封面video.setLink(url);//设置视频地址**//video.setCategoryId(category_id);//设置类别idSystem.out.println(video);ResponseBean uploadVideo=videosClient.publish(video);//boolean save = videoService.save(video);return ResponseBean.success("上传视频成功"+uploadVideo);}

运行结果

利用阿里云oss实现上传视频和图片功能相关推荐

  1. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  2. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  3. 阿里云 OSS监控上传进度

    阿里云 OSS监控上传进度 阿里云上传进度SDK 使用阿里云带进度条的上传,然后将长传进度存入session // 带进度条的上传ossClient.putObject(new PutObjectRe ...

  4. 阿里云oss文件上传工具类

    阿里云oss文件上传工具类 阿里云oss 阿里云oss 导入文件阿里云oss的maven依赖 <!-- 阿里云oss依赖 --><dependency><groupId& ...

  5. Java中阿里云OSS文件上传工具类

    阿里云OSS文件上传下载工具类 前言: 本质上就是获取配置文件信息,然后注入bean,调用sdk中提供的增删改方法: 为了避免同名文件会替换,用了hutool中唯一id生成+文件名做拼接 导入依赖:→ ...

  6. 阿里云OSS文件上传下载,拿来即用

    什么是OSS 我们可以理解为就是一个资源服务器,在这之前我也尝试过Nginx当静态资源服务器,但效果比较一般,为什么选择阿里云OSS,只是因为最近刚好公司用到了,所以就接入了,还有其他的比如七牛云,腾 ...

  7. C#阿里云oss接口上传和下载文件

    一  前期准备工作:需要获取阿里云的:endpoint, accessKeyId, accessKeySecret这三个参数值,可以登录阿里云账号获取到. 再一个就是项目中需要引入阿里云的接口文件Al ...

  8. PHP上传大文件视频到阿里云oss分片上传

    下载阿里云oss的SDK composer require aliyuncs/oss-sdk-php 上传视频,我用的是分片上传,其实阿里云的文档已经写得很清楚了,不过这是当我把上传的功能写出来后才这 ...

  9. 阿里云视频点播(上传视频)服务最新版本使用方法(解决部分依赖无法下载或不存在问题)

    1.首先复制编写好的工具类(摘取自阿里云官方文档,可以在文芳查看), 然后你需要改写你的ak aksk,其次更改bbucket路径(存储路径),以及点播接入点(如 cn-beijing,cn-shan ...

  10. python实现阿里云OSS文件上传下载

    一 前言 最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证.OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持, ...

最新文章

  1. x-mixed-replace - 转自博客园cnblog - Scowl Knight
  2. Finally语句块的执行
  3. 彪马PUMA源代码被盗,称客户数据不受影响
  4. mysql为什么总是错的_这个mysql如何总是错的
  5. SpringBoot的jar传递参数时,使用两个「--」横线来标记参数
  6. 2037. 使每位学生都有座位的最少移动次数
  7. bootstrap框架写手机端app模板也很漂亮
  8. 黑色星期五c语言程序,黑色星期五C语言实现
  9. cygwin 复制粘贴
  10. 什么是真的人脉关系?
  11. [51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解
  12. 关于丢番图方程x^2+y^2=n
  13. tipask 3.5 出错get_class() expects parameter 1 to be object 解决方案及说明
  14. 【2022省选模拟】叮叮车——卡特兰数、数位DP
  15. python——实例详细弄懂if __name__ == ‘__main__‘用法
  16. 转 fpga学习经验2
  17. 领导给你安排这三个紧急任务(不是器重你而是利用你)
  18. 学习IT技术好处有哪些
  19. ubuntu中如何提高源的下载速度
  20. FPGA+雷达信号处理

热门文章

  1. Egret 骨骼动画
  2. 华东理工大学计算机专业研究生,华东理工大学硕士研究生培养方案计算机科学与技术一级学科(学科代码:0812)信息科学与工程学院...
  3. Python str count方法
  4. Clouda开发笔记
  5. html chm 打不开,Win7系统中出现CHM打不开的具体解决方法
  6. 计算机表格转文本,Excel表格怎么用公式转换文本
  7. Gmail:如何跟踪邮件阅读状态
  8. 用于 VMware vSphere ESXi 4/5/6 的HP智能阵列B140i SATA RAID控制器驱动程序
  9. 山西大同大学计算机考试打印准考证
  10. python打开网页后点击网页按钮_python单击网页上的按钮