Jfinal 弹窗下载HSSFWorkbook

何精董 发布于 2015/01/10 20:03
阅读 556
收藏 0

@JFinal 你好,想跟你请教个问题:

我已经生成了HSSFWorkbook,并且可以下载到指定目录

现在有个需求就是要有弹窗下载,在servlet中可以使用

response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename=temp.xls");

在jfinal中,做个 BinaryRender extends Render

public class BinaryRender extends Render{


private HSSFWorkbook wb;

public BinaryRender(HSSFWorkbook wb){
this.wb = wb;
}

@Override
public void render() {
// TODO Auto-generated method stub
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename=temp.xls");


try {
wb.write(response.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


}

使用了render(new BinaryRender(wb));

测试能够运行到wb.write(response.getOutputStream());就是没有弹窗 请问怎么解决

加载中
0
何精董
何精董

BinaryRender代码如下

package asser.my;

import java.io.IOException;

import javax.servlet.ServletOutputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.jfinal.render.Render;

public class BinaryRender extends Render {

	private HSSFWorkbook wb;

	public BinaryRender(HSSFWorkbook wb) {
		this.wb = wb;
		render();
	}

	@Override
	public void render() {
		// TODO Auto-generated method stub
		response.setContentType("application/x-msdownload");
		response.setHeader("Content-Disposition",
				"attachment;filename=temp.xls");

		try {
			wb.write(response.getOutputStream());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}



0
JFinal
JFinal
试试 renderFile("temp.xls");
0
何精董
何精董

@JFinal  不行,报jfinal的404,就算tomcat里面该工程下有temp.xls也不行。最后还是通过写入磁盘再读取成file,通过renderFile(file)下载。

请问有没有不通过读写磁盘进行*.xls下载的方法?另外想这个寒假仔细看下jfinal的源码,请问从那个方向如说会比较好?

0
JFinal
JFinal

引用来自“何精董”的评论

@JFinal  不行,报jfinal的404,就算tomcat里面该工程下有temp.xls也不行。最后还是通过写入磁盘再读取成file,通过renderFile(file)下载。

请问有没有不通过读写磁盘进行*.xls下载的方法?另外想这个寒假仔细看下jfinal的源码,请问从那个方向如说会比较好?

把路径写对才可以用 renderFile(String file),还可以用 renderFile(new File(...)),保障  new File(...).exists() 为 true 就可以
返回顶部
顶部