JFinal提供了好几种方便的render但是不知道为啥就是没有提供直接渲染图片的render,如果我们直接在Controller的方法中往输入流中写的话是还是会有默认的render生效的,比如下面这种:

(示范错误情况,请勿模仿)

/**
* 显示图像
*/
public void showPic(){ String filename=getPara("name");
if(!securityCheck(filename)){
return ;
} File imgFile=new File(ConstantRepo.BASE_UPLOAD_FILE_PATH+"/"+filename);
try {
FileUtils.copyFile(imgFile, getResponse().getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}

尽管我们手动的往response的OutputStream中写了东西,但是因为还会有一个默认的render使用当前的方法名作为返回值,这会导致在客户端报404.

这个时候我们自定义一个Render来专门渲染图片,当我们指定了默认的Render的时候默认的就不再生效,下面是一个可以将图片渲染到输出流的Render,与CaptchaRender类似:

import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils; import com.jfinal.render.Render; /**
*
* 用来向客户端渲染图片
*
* @author CC11001100
*
*/
public class ImageRender extends Render { /**要渲染到客户端去的图像文件*/
private File imgFile; public ImageRender(File imgFile) {
super();
this.imgFile = imgFile;
} public File getImgFile() {
return imgFile;
} public void setImgFile(File imgFile) {
this.imgFile = imgFile;
} /**
* 将特定的图片写回到客户端
*/
public void render() {
response.setContentType("image/jpeg");
try {
FileUtils.copyFile(imgFile, response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
} }

需要注意上面使用了Apache commons-io,引入maven依赖:

<!-- common-io依赖 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

将要渲染的图片文件传进去,同时指定要使用的渲染器即可:

/**
* 显示图像
*/
public void showPic(){ String filename=getPara("name");
if(!securityCheck(filename)){
return ;
} File imgFile=new File(ConstantRepo.BASE_UPLOAD_FILE_PATH+"/"+filename);
render(new ImageRender(imgFile));
}

比如用来显示用户头像:

<img src="<c:url value="/file/showPic?name=${user.avatar}"/>" class="user-avatar"/>

效果如下:

.

JFinal向客户端渲染图片的方法的更多相关文章

  1. 基于html5 canvas 的客户端异步上传图片的插件,支持客户端压缩图片尺寸

    /** * Created by xx on 15-05-28. * 基于html5 canvas 的客户端异步上传画片的插件 * 在实际应用中,常常要用于上传图片的功能.在现在越来越多的手机weba ...

  2. PHP《将画布(canvas)图像保存成本地图片的方法》

    用PHP将网页上的Canvas图像保存到服务器上的方法 2014年6月27日 歪脖骇客 发表回复 8 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审 ...

  3. Android 圆形/圆角图片的方法

    Android 圆形/圆角图片的方法 眼下网上有非常多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这样的结束也是Android开发必 ...

  4. 截取完整网页图片的方法 Chrome 浏览器

    截取完整网页图片的方法:https://sspai.com/post/42193 要想使用截图功能,你需要首先确保 Chrome 已升级至 59 或更高版本.在想要截图的网页中,首先按下 ⌘Comma ...

  5. canvas性能-drawImage渲染图片

    canvas性能-绘制图片 目录 canvas性能-绘制图片 canvas绘制图片 drawImage putImageData createPattern 测试绘制耗时 drawImage Imag ...

  6. uniapp微信小程序保存base64格式图片的方法

    uniapp保存base64格式图片的方法首先第一要先获取用户的权限 saveAlbum(){//获取权限保存相册 uni.getSetting({//获取用户的当前设置 success:(res)= ...

  7. android图片处理方法

    Java代码 //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ...

  8. iOS给图片添加滤镜&使用openGLES动态渲染图片

    给图片增加滤镜有这两种方式: CoreImage / openGLES 下面先说明如何使用CoreImage给图片添加滤镜, 主要为以下步骤: #1.导入CIImage格式的原始图片 #2.创建CIF ...

  9. canvas代替img渲染图片

    移动端用canvas代替img渲染图片,可以提高性能 var oImg = new Image(); oImg.src = url; oImg.onload = function(){ var cvs ...

随机推荐

  1. sublime text 多行代码注释快捷键

    多行选择后按下ctrl+/ 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中 ...

  2. mysql 数据类型 及 常用命令

    一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127 无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-3 ...

  3. opencv 矩阵类数据的运算

    参考:http://blog.sina.com.cn/s/blog_7908e1290101i97z.htmlhttp://blog.sina.com.cn/s/blog_afe2af380101bq ...

  4. ASP.NET 页面访问控制

    request常用对象和方法: @属性:1.quary string,获取通过URL路径传来的数据 2.Form,获取通过表单提交传输的数据 3.servervariables,获取Web服务器变量的 ...

  5. LoadRunner脚本参数化常见错误

    错误代码:Error:missing newline in d:\loadrunner\username.dat 错误原因:场景设置不合理,参数数量不够,或者参数化文件有问题. 1)如果参数化文件反复 ...

  6. iOS pch文件的创建

    3.iso pch头文件的创建  输入文件名的时候记得打钩 3.1.在Build Settings 里搜索pref就能找到preflx, 点击设置相对路径 $(SRCROOT) +路径:成功了就会显示 ...

  7. AtCoder Regular Contest 083 C: Sugar Water

    题意 给你一个空杯子,有4种操作: 操作1 加100a克的水 操作2 加100b克的水 操作3 加c克的糖 操作4 加d克的糖 糖的质量不能超过水的质量e/100 糖和水的总质量不能超过f 糖的质量不 ...

  8. 【JavaScript&jQuery】单选框radio,复选框checkbox,下拉选择框select

    HTML: <!DOCTYPE html> <html> <head> <title></title> <meta charset=& ...

  9. [AT2172] [agc007_e] Shik and Travel

    题目链接 AtCoder:https://agc007.contest.atcoder.jp/tasks/agc007_e 洛谷:https://www.luogu.org/problemnew/sh ...

  10. HBase多租户机制分析

    在HBase1.1.0发布之前,HBase同一集群上的用户.表都是平等的,没有优劣之分.这种’大同’社会看起来完美,实际上有很多问题.最棘手的主要有这么两个,其一是某些业务较其他业务重要,需要在资源有 ...