公开权限的图片展示

首先确定思路,存储在oss中的图片有两种权限模式,一种是公开的,这种直接通过url对应到具体某张图片即可显示。

格式如下:

http://<yourBucketName>.<yourEndpoint>/<yourObjectName>?x-oss-process=image/<yourAction>,<yourParamValue>

具体例子

http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg

这个链接直接在浏览器地址就能访问,所以html中显示使用

<img src="http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg" />

私有读写访问权限的图片显示

一般oss都是设置的私有读写权限,也就是必须登录认证才能获取到图片,本文主要记录这种情况下的图片展示。

安装oss的java sdk

在Maven项目中加入依赖项(推荐方式)
在 Maven 工程中使用 OSS Java SDK,只需在 pom.xml 中加入相应依赖即可。以 2.8.3 版本为例,在

<dependencies>

内加入如下内容:

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

方式一 使用signurl

这种是最简单也是比较高效的方式,不会暂用我们服务器本身的带宽,只是拿到一个oss认证后的图片地址返回在html中使用,用户在浏览器访问时走的还是oss本身的带宽。

controller代码如下:

 @RequestMapping("/look")public String picLink(Model model,@RequestParam String pic_link) throws IOException {PicLink  picLink=mongoTemplate.findOne(new Query(Criteria.where("pic_link").is(pic_link)), PicLink.class);// Endpoint以杭州为例,其它Region请按实际情况填写。String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。String accessKeyId = "23213dfd";String accessKeySecret = "fdaeww";String bucketName = "family-lab";String objectName = picLink.getCloud_key();//云上的图片名称// 创建OSSClient实例。OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
//       // 设置图片处理样式。不设置为原样式
//       String style = "image/resize,m_fixed,w_500,h_700/rotate,90";// 指定过期时间为10分钟。Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);req.setExpiration(expiration);
//       req.setProcess(style);URL signedUrl = ossClient.generatePresignedUrl(req);System.out.println(signedUrl);// 关闭OSSClient。ossClient.shutdown();model.addAttribute("signedUrl", signedUrl);return "/look";}

html代码

  <img src="${signedUrl}" />

方式二 base64的方式

把oss中的图片通过后端下载下来变成base64的编码,在html中展示。
–该模式会消耗 我们服务器本身的带宽

参考

java进阶(九)------图片跨域显示—服务端获取图片显示在jsp中

方式三 文件流的方式

把oss中的图片通过后端下载下来变成文件流直接返回到respone中显示。–该模式会消耗 我们服务器本身的带宽

获取图片信息

 // https://ram.console.aliyun.com 创建RAM账号。String accessKeyId = "1213";String accessKeySecret = "312314";String bucketName = "lab";String objectName = picLink.getCloud_key();// 创建OSSClient实例。OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 获取图片信息String infostyle = "image/info";GetObjectRequest inforequest = new GetObjectRequest(bucketName, objectName);inforequest.setProcess(infostyle);try {ossClient.getObject(inforequest, new File("example-info.txt"));String infoStr = readToString("example-info.txt");System.out.println(infoStr);deleteFile("example-info.txt");} catch (Exception e) {System.out.println("图片损坏设置为未处理");if (picLink.getSource() != null && picLink.getSource().equals("familysearch")) {picLink.setDealed(10);}else {picLink.setDealed(0);}mongoTemplate.save(picLink);}private String readToString(String fileName) {  String encoding = "UTF-8";  File file = new File(fileName);  Long filelength = file.length();  byte[] filecontent = new byte[filelength.intValue()];  try {  FileInputStream in = new FileInputStream(file);  in.read(filecontent);  in.close();  } catch (FileNotFoundException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  try {  return new String(filecontent, encoding);  } catch (UnsupportedEncodingException e) {  System.err.println("The OS does not support " + encoding);  e.printStackTrace();  return null;  }  }/*** 删除单个文件** @param fileName*            要删除的文件的文件名* @return 单个文件删除成功返回true,否则返回false*/private  boolean deleteFile(String fileName) {File file = new File(fileName);// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除if (file.exists() && file.isFile()) {if (file.delete()) {System.out.println("删除单个文件" + fileName + "成功!");return true;} else {System.out.println("删除单个文件" + fileName + "失败!");return false;}} else {System.out.println("删除单个文件失败:" + fileName + "不存在!");return false;}}

参考

java进阶(八)------动态获取图片—服务端获取图片显示在jsp中

更多参考链接

安装

快速入门

授权访问

aliyun-oss-java-sdk–github

图片处理

Springmvc展示oss的图片相关推荐

  1. java多图片上传json_[Java教程]SpringMVC框架五:图片上传与JSON交互

    [Java教程]SpringMVC框架五:图片上传与JSON交互 0 2018-08-07 22:00:42 在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包 ...

  2. 最详细PicGo(图床)加阿里云OSS实现图片自动上传

    最详细PicGo加阿里云OSS实现图片自动上传 前言 使用Typora这款markdown编辑器时,导入的图片是本地链接,在进行资源共享时,就会出现图片无法显示问题,为了将相对路径转为绝对路径,就必须 ...

  3. 使用阿里云的oss对图片加水印并且字体大小自适应(阿里云oss暂不支持字体大小自适应)

    使用阿里云的oss对图片加水印并且字体大小自适应(阿里云oss暂不支持字体大小自适应) 背景: 首先阿里云oss云对象存储是不能做到字体大小自适应的,因为在开发中我们的图片上传的尺寸是做不到固定大小宽 ...

  4. oss 照片图片处理 压缩图

    oss 照片图片处理 压缩图 OSS 压缩图显示, 首先创建规则,如test2 原图地址后面加?x-oss-process=style/test2 或者原图后面加规则代码 ?x-oss-process ...

  5. jupyter notebook 用PPT展示代码 +插入图片

    jupyter notebook 用PPT展示代码 +插入图片 假设我们已经安装了anaconda,此时有jupyter notebook, 1.为了用ppt显示代码,我们需要pip install ...

  6. 使用阿里云OSS实现图片上传案例

    文章目录 前言 一.OSS是什么? 二.使用步骤 1.开通OSS服务 2.创建bucket 3.创建子账户 4.查看帮助文档,编写后端代码 5.layui前端 总结 前言 在正式的开发环境中,类似图片 ...

  7. Android调用照相机展示高清图片及展示图片时图片倾斜问题

    Android调用照相机展示高清图片及展示图片时图片倾斜问题 一.概述 二.配置权限 三.封装CameraUtil工具类 1.Android调用照相机 2.调用系统相册 3.拍摄完毕或在相册选取好照片 ...

  8. minio图片展示(minio图片上传地址为内网,展示时为外网)

    minio图片展示 一.minio图片服务器 二.图片展示 1.方法一:后端转发 2.方法二:nginx代理 一.minio图片服务器 拥有两个端口号,一个时web端控制台端口号,一个是上传时使用的端 ...

  9. VUE Base64编码图片展示与转换图片

    VUE Base64编码图片展示与转换图片 VUE Base64编码图片展示与转换图片 VUE Base64编码图片展示 Base64编码转换图片 文件转换base64编码 更便捷的图片转化Base6 ...

  10. 前端img标签展示tiff格式图片

    前端img标签展示tiff格式图片 下面展示一些 内联代码片. *html<el-form-item label="参考图片"><img id="img ...

最新文章

  1. 二叉搜索树与双向链表
  2. java imap 标记已读,JavaMail通过IMAP和POP3接收未读以及设置已读邮件
  3. 高等数理统计(part3)--常见的连续型分布
  4. php 随机指定位数,php生成一个可选位数的随机码
  5. 前端程序升级linux方案,开源:AspNetCore 应用程序热更新升级工具(全网第一份公开的解决方案)...
  6. UI设计动效\动画素材模板|分层分步骤学习动效设计
  7. Python爬虫实战:应用宝APP数据信息采集
  8. 三、MQTT Windosw下的 进一步调试
  9. 多变量微积分笔记19——直角坐标系和柱坐标系下的三重积分
  10. python遍历目录压缩文件夹_zip包含一个档案文件夹,如何使用Python获取存档中每个zip的注释?...
  11. 域名ssl证书下载及部署
  12. 使用tayga测试无状态nat64功能
  13. 南京、无锡、苏州三地部分it岗待遇简况
  14. 模式识别和计算机科学与技术,模式识别与智能系统
  15. 追“根”溯源:植物根际的微生物生态
  16. 利用telemetry进行权限维持
  17. 中小企业安全路由器防火墙
  18. 声韵启蒙(1)-(清)车万育
  19. XML报表打印出错,乱码问题
  20. Centos7下的LibreOffice的搭建及自动化脚本部署

热门文章

  1. Pygame - 背景图片连续滚动
  2. 获取时间差(类似微信朋友圈消息的时间显示)
  3. codeforces 1019C Sergey's problem
  4. python对视频截帧的俩个方法
  5. 黑马程序员_样式选择器的种类及用法
  6. 通过VLAN技术实现某公司部门之间的网络互通
  7. 如何处理win7 64位系统登录进程初始化失败故障
  8. 测试幸运指数的软件,心理测试 | 你的幸运指数有多高?测测就知道
  9. html播放视频音乐自动暂停,为什么打开别的网页后视频和音乐会自动暂停?
  10. 试题 算法训练 士兵杀敌(二)