1、maven依赖

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

2、utils (这块可以相当于封装好的,不用动 只要将配置文件写好就行)

package com.hqs.shmis.utils.img;import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.List;
import java.util.Random;
@Component
public class OSSClientUtil {protected static final Logger log = LoggerFactory.getLogger(OSSClientUtil.class);@Value("${Oos.endpoint}")private String endpoint;@Value("${Oos.accessKeyId}")private String accessKeyId;@Value("${Oos.accessKeySecret}")private String accessKeySecret;@Value("${Oos.bucketName}")private String bucketName;//文件存储目录private String filedir = "APP/";/**** 上传图片* @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(endpoint, accessKeyId, accessKeySecret);PutObjectResult putResult = ossClient.putObject(bucketName, filedir + fileName, instream, objectMetadata);ret = putResult.getETag();} catch (IOException e) {log.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/jpeg";}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/jpeg";}/*** 获取图片路径* @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]);
//                log.info(url);
//                String[] spilt1 = url.split("\\?");
//                return spilt1[0];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(endpoint, accessKeyId, accessKeySecret);URL url = ossClient.generatePresignedUrl(bucketName, 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();}
}

3、配置(application.yml),这些再阿里云上都有的,将你自己的服务器加进去

Oos:accessKeyId: accessKeySecret: bucketName: endpoint: 

4、调用接口

    @Autowiredprivate OSSClientUtil ossClientUtil;//获取单图片路径
String imageUrl = ossClientUtil.checkImage(image)  //image 为MultipartFile类型//多图片路径
String imageUrlList = ossClientUtil.checkList(imageList) //imageList为List<MultipartFile>  返回 ","分割的图片路径

我的微信号:xiang20200106 ,欢迎大家找我聊天
— 【 THE END 】—

本公众号已经整理一套包含前端和后端的全套电子书教程,限时免费赠送,请在公众号里回复「电子书」获取!

阿里云OSS服务器上传图片并获取路径(SpringBoot)(☆)相关推荐

  1. 关于阿里云OSS服务器绑定域名及Https证书

    这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言-博主看到后会去代替大家踩坑的- 主页: oliver尹的主页 格言: 跌倒了爬起来就好- ...

  2. 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)

    亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...

  3. 微信 开发 图片 上传 阿里云 oss 服务器

    在做微信开发时,我需要将图片上传至阿里云OSS,思路是服务端下载微信图片再转存至OSS. wx.chooseImage({count: 1, // 默认9sizeType: ['original', ...

  4. 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)

    前言 网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手. 本文站在新手小白的角度,实现微信小程序开发中,"前端直传" 上传文件到阿里云oss ...

  5. 阿里云ECS服务器购买及配置,SpringBoot项目部署到阿里云ECS服务器,阿里云ECS服务器安装JDK、Mysql、nginx详细步骤

    1.购买阿里云ECS服务器 官网:阿里云-上云就上阿里云 根据自己的需要选择相应的配置: 目前有一个月的服务器免费体验时间,我选择了免费体验,点击后,可以看到你刚才购买的服务器: 也可以通过这里查看你 ...

  6. C#实现自动下载阿里云数据库RDS,附转储阿里云OSS服务器

    本文属于个人原创作品.个人总结,谢绝转载.抄袭.如果您有疑问或者希望沟通交流,可以联系QQ:865562060. 一.简述 现阶段服务器.数据库上云的选择越来越多,但不是说服务器和数据库上云管理之后就 ...

  7. 阿里云 oss服务器文件上传 java

    前天做oss服务器文件上传,之前没了解过,做的过程中遇到许多问题,最终通过查阅相关资料解决了,特分享一下. 首先准备工作 必要的jar 这里注意版本一致,不然就会报很多坑爹的错误.. 如果你断点调试在 ...

  8. Java使用阿里云OSS对象存储上传图片

    示例说明   该案例是OSS Java SDK的示例程序,您可以修改endpoint.accessKeyId.accessKeySecret.bucketName后直接运行. 本示例中的并不包括OSS ...

  9. java通过URL获取网络文件并上传到阿里云OSS文件服务器

    首先,先从网络上读取到文件 /*** 从网络Url中读取文件* @param urlStr 文件URL地址* @throws IOException*/public String downLoadFr ...

最新文章

  1. linux 内核模块声明 MODULE_LICENSE
  2. .NET Framework终于开源了!
  3. mysql php教程,MySQL PHP语法
  4. Trouble Shooting记录:服务 Microsoft Exchange Information Store 意外停止
  5. C++编程语言中创建类的对象(类的初始化)的方法
  6. Mybatis mapper.xml中常用标签详解
  7. flashfxp连接失败,导致flashfxp连接失败的4种原因
  8. arduino下载库出错_纯干货!关于Arduino 库在多种操作系统安装使用最详细、最全面的指南及常见问题解决办法!...
  9. DotSoft.C3DTools.v7.0.0.3民用勘测地图和GIS工具集合
  10. 建行手机银行4.0版本转账怎么不要求输入支付密码?
  11. Redis基础知识笔记
  12. Windows7 Embedded Standard x64更新代码80072EFE解决方法
  13. 深度学习目标检测网络汇总对比,挺好的
  14. 淘宝网 286亿海量图片存储与处理架构
  15. 道闸系统需不需要服务器,道闸车牌识别系统车辆进出场管理方案
  16. 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署
  17. 个人博客(一)之表结构设计
  18. 跳板机的基本原理,以及实现思路!
  19. 计算机外观屏幕怎么设计,设计师修图的显示器体验如何?感受下
  20. Java实现微信公众号扫码登录

热门文章

  1. 无线怎么联系不上服务器,无线路由器设置好后联系不到服务器
  2. rgb html转换,RGB与十六进制数值互转(html)
  3. python中breakpoint_Python3.7 特色(2)-breakpoint 內建除錯
  4. php 周易,GitHub - jyiL/lunarPHP: 易经六十四卦排盘类库
  5. 雅诗兰黛中国创新研发中心在上海揭幕;安联贸易任命中国区行政总裁 | 美通企业日报...
  6. jpg格式图片怎么转换成pdf格式?如何把jpg图片转换成pdf格式文档?
  7. ubuntu 内存占用过高导致卡死 解决办法
  8. 双语电子书epub格式
  9. 惠普1005w打印机使用说明书_首款能充粉的打印机来了 惠普1005w一体机评测
  10. android分享图片到qq,Android实现截图分享qq,微信