一、图片的预览和文件的下载,用FreeMaork不用写代码就可以轻松搞定,template-loader-path是文件的位置,可以添加多个文件访问地址,用逗号隔开。

spring:resources:static-locations: file:/Users/jiangxiaoyi/Desktop/filesfreemarker:#    设定模板的加载路径,多个以逗号分隔,默认: ["classpath:/templates/"]template-loader-path: file:/Users/jiangxiaoyi/Desktop/files#    设定所有request的属性在merge到模板的时候,是否要都添加到model中.request-context-attribute: request#    设定Template的编码.charset: UTF-8#    是否检查templates路径是否存在.check-template-location: true#    是否允许mvc使用freemarker.enabled: true#    设定模板的后缀.suffix: .htmlsettings:#    更新即时生效template_update_delay: 0

然后通过url直接请求就可以实现文件下载啦,http://loacalhoost/项目目名称/文件名字

二、对上传的文件大小进行限制,在application.yml的Spring下加入

spring:servlet:multipart:max-file-size: 50MBmax-request-size: 500MB

如果启动报错记得MB都大写。

三、图片下载加水印

先说一下图片下载时加水印的步骤:

1.先获取到需要下载的文件

2.对原文件加入水印

3加完水印的二进制流可以重新也可以重新生成一个新的文件,如果为了保留原文件最好是生成一个新的图片。

4.对新生的文件下载

public void downloadWithWaterMark(HttpServletRequest request, RequestVo requestVo, HttpServletResponse response) {String fileName = requestVo.getFileName();String suffix = Tools.getFileSuffix(fileName);String waterFilePath = null;if (Arrays.asList(Consts.constant.PICTURE_SUFFIX).contains(suffix)) {//图片加水印waterFilePath = waterMarkForPic(requestVo);// 下载downloadFile(waterFilePath, response);}
}
如果对上传的图片格式有限制加上,PICTURE_SUFFIX = {".apk", ".jpg", ".jpeg", ".png", ".JPG", ".jpeg", ".PNG", ".gif", ".GIF"};

(一)、图片加水印

   //图片加水印public String waterMarkForPic(RequestVo requestVo) {String fileName = requestVo.getFileName();//水印内容String waterMarkContent = "xxxxxxxx";//字体颜色,不知道数据没有关系可以点左侧的颜色自行选择的Color color = new Color(221, 75, 57);//字体和字号的设置Font font = new Font("Times New Roman", Font.PLAIN, 120);//对字体的透明度设置float alpht = 0.5f;//加上水印图片的路径,如果路径一致,名字要不同否则是对原文件进行操作String tarImgPath = Consts.constant.UPLOAD_LOCAL_FILE_ADDRESS_PREFIX + "/" + request.getproject() + "/" + "water-"+fileName;try {// 读取原图片信息String filePath = Consts.constant.UPLOAD_LOCAL_FILE_ADDRESS_PREFIX + "/" + request.getproject()) + "/" + fileName;//得到文件File srcImgFile = new File(filePath);//文件转化为图片Image srcImg = ImageIO.read(srcImgFile);//获取图片的宽int srcImgWidth = srcImg.getWidth(null);//获取图片的高int srcImgHeight = srcImg.getHeight(null);// 加水印BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);Graphics2D graphics2D = bufImg.createGraphics();graphics2D.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);//颜色graphics2D.setColor(color); //字体graphics2D.setFont(font);//透明graphics2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpht));//旋转graphics2D.rotate(Math.toRadians(45),(double)bufImg.getWidth()/2,(double)bufImg.getHeight()/2);//设置水印的坐标,这可以根据打印的内容大小和位置决定int x = srcImgWidth/50;int y = srcImgHeight/2;//画出水印graphics2D.drawString(waterMarkContent, x, y);  graphics2D.dispose();// 输出图片FileOutputStream outImgStream = new FileOutputStream(tarImgPath);ImageIO.write(bufImg, "jpg", outImgStream);} catch (IOException e) {e.printStackTrace();}//返回加了谁演的图片路径return tarImgPath;}

(二)、文件下载(所有文件都适用)

public void downloadFile(String path, HttpServletResponse response) {String filePath = path.substring(0, path.lastIndexOf("/"));String fileName = path.substring(path.lastIndexOf("/"),path.length());File file = new File(filePath);if (file.exists()) {response.setContentType("application/force-download");response.addHeader("Content-Disposition","attachment;" + "fileName=" + fileName);byte[] buffer = new byte[1024];FileInputStream fileInputStream = null;BufferedInputStream bufferedInputStream = null;try {fileInputStream = new FileInputStream(new File(path));bufferedInputStream = new BufferedInputStream(fileInputStream);OutputStream outputStream = response.getOutputStream();int i = bufferedInputStream.read(buffer);while (i != Consts.constant.NAGATIVE_ONE) {outputStream.write(buffer, 0, i);i = bufferedInputStream.read(buffer);}} catch (IOException e) {e.printStackTrace();} finally {if (bufferedInputStream != null) {try {bufferedInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (fileInputStream != null) {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}

Spring Boot 所有文件下载,图片下载加水印相关推荐

  1. 使用Vue和Spring Boot实现文件下载

    推荐:Vue学习汇总 使用Vue和Spring Boot实现文件下载 推荐 使用Vue和Spring Boot实现文件上传. 前端 这里介绍三种方式来实现文件下载,跨域问题在后端会进行处理,这个例子是 ...

  2. spring boot结合FastDFSClient做下载文件注意事项

    spring boot结合FastDFSClient做下载文件注意事项 1.后台下载方法走完后,前端页面浏览器一直没出现下载框. 2.ie浏览器兼容问题. 下面的FastDFSClient类依赖fdf ...

  3. 如何给图片批量加水印?

    如何给图片批量加水印?如果你是开网店的,或者你是一名自媒体创作者,为了防止自己的图片不被别人盗用,每天肯定需要给大量的图片添加水印,如果图片数量较多,那么工作量就肯定非常的大,每天肯定要花费大量的时间 ...

  4. java 压缩图片时候加水印

    直接上代码: 图片压缩加水印 @Testpublic void TetsShuiYin() {// String path1 = "D:\\temp\\Flower.PNG"; / ...

  5. JAVA实现图片加水印及Base64图片字符串加水印

    JAVA实现图片加水印及Base64图片字符串加水印 可将根据不同需求选择场景一,场景二来实现家水印操作,个人感觉比我上一遍文章<base64字符串加水印 >实在 场景一: 涉及上送过来的 ...

  6. 图片怎么加水印?添加水印其实很简单

    图片怎么加水印?相信很多作摄影师的小伙伴们都会在日常的分享中给自己的照片添加水印.我们都知道拍摄一张出色的照片背后付出了很多,给图片添加水印是对自己照片版权的保护.那么问题来了,如何好看的添加水印呢? ...

  7. Linux打印添加水印,Linux 下给图片批量加水印

    一个非盈利组织的项目负责人突发奇想想给他们网站上的每张照片加上水印,说实话那些照片都是平时活动.party 的生活照片用不着用水印那么夸张,第一次听说给生活照加水印的.没办法,谁让我们和他们有合作项目 ...

  8. 图片怎么加水印?图片加水印用什么软件?

    不知道大家有没有遇到过这种情况,自己用心拍摄制作的图片,分享到社交平台后就被其他人盗用,找对方理论结果还不承认,让人很是恼火.因此,现在将图片或视频分享到网上时,我都会先给文件添加属于我自己的水印,减 ...

  9. php根据背景图片深浅加水印

    最近做到一个项目要实现这样一个功能, 根据上传图片的主色调, 在图片上加水印或文字. 比如上传的图片颜色较深,文字的颜色用浅色标识,如果图片颜色较浅, 则文字颜色用深色标识. 解决方法是: 先确定要加 ...

最新文章

  1. Mysql - 安装与配置
  2. android 固定底部 布局_Android系统列表控件
  3. 树莓派UART串口编程--使用wiringPi库-C开发【2-修改驱动】
  4. 中台,很多人理解的都不对
  5. hadoop为什么出现
  6. cad立面索引符号 规范_园林景观设计规范,你不可或缺的真干货
  7. nginx源码编译安装和配置
  8. 解决Visual Studio 2022 python 中文乱码问题
  9. 解决hive表中comment中文乱码问题
  10. matlab z统计量,z统计量(z统计量与t统计量)
  11. 磁珠 符号_超实用理解磁珠
  12. android 屏幕分辨率获取,Android获取屏幕分辨率的三种方法
  13. 让你提前认识软件开发(8):memset()与memcpy()函数
  14. HLK-W801-LVGL8之触摸驱动
  15. 安卓4G/5G无线图传终端(单兵执法记录仪、智能安全帽、头盔摄像头)常见问题
  16. 29. 人类将如何变革--走出金字塔模型(上)
  17. 校园网组建 (基于Packet tracer)
  18. activiti5.22整合官方编辑器
  19. 机械革命笔机本全套4K高清壁纸原系统提取
  20. QQ宠物冒险岛全攻略

热门文章

  1. vue中对echarts折线图设置基准线/警告线,可在输入框输入想要的值,并改变已有的基准线的值。
  2. 非零基础自学Golang 第3章 基本变量与类型 3.1 Go语言变量
  3. 商场三十六计——第8计 “暗渡陈仓”
  4. 万丈高楼平地起 ——浅谈网格计算基础
  5. 计算机的服务桌面,比较实用的电脑桌面软件值得入手,个个精选
  6. 【Codecs系列】双帧参考特性
  7. 网络环路检测定位技术的发展过程
  8. ERROR 1044 (42000)Access denied for user @localhost to database
  9. rtmp/rtsp测试地址 2019/11/22日亲测可用
  10. arduino智能跟随小车