LigerUI、JFinal的上传文件、下载文件
一、文件上传
效果:
字段:
{ display: '上传文件',name:'file',width: 200, newline: true, type: 'text',validate: { required: false }}
var AppendFileDetail = null;//文件上传弹出窗口
字段事件:
append_file = $("input[name=file]").ligerTextBox({onFocus: function(){
$('input[name=file]').blur();
if (AppendFileDetail) {
AppendFileDetail.show();
} else {
AppendFileDetail = $.ligerDialog.open({
target : $("#fileupload_div"),
title : '选择文件',
width : 360,
height : 170,
top : 170,
left : 280,
buttons : [ {
text : '确定',
onclick : function() {
var filename = $("#fileupload").val();
var extend = filename.substring(filename.lastIndexOf("."), filename.length);
extend = extend.toLowerCase();
//if (extend == ".xls" || extend == ".xlsx") {
// AppendFileDetail.hide();
// $('input[name=append_file]').val(filename);
//} else {
// LG.showError("请上传Excel文件");
//}
$('input[name=file]').val(filename);
AppendFileDetail.hide();
}
}, {
text : '取消',
onclick : function() {
AppendFileDetail.hide();
}
} ]
});
}
$('uploadfile').focus();
}});
}
前台JS保存时请求后台进行上传附件保存文件操作,调用方法时需导入js
<script type="text/javascript" src="${webroot}/lib/js/ajaxfileupload.js"></script>
后台操作:
二、文件下载
效果:
前台实现:
后台实现:
/**
* 文件下载
*/
public void downfile() throws IOException{
String path = getSession().getServletContext().getRealPath("upload");
Integer businessSourceId = getParaToInt("businessSourceId");
TbBusinessSource entity = TbBusinessSource.dao.findByBusinessSourceId(businessSourceId);
String filename = entity.get("filename");
String allPath = path + "\\" + filename;
File file = new File(allPath);//获取文件
//获取到文件后,有两种方式,如下:
//方式一(JFinal框架自带渲染):
if (file.exists()) { //如果文件存在
renderFile(file);
} else {
renderJson();
}
//方式二(通用方式,利用response):
注释:可传入参数isOnLine是否在线打开
HttpServletResponse response = getResponse();
Boolean isOnLine = false;
BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); // 非常重要
if (isOnLine) { // 在线打开方式
URL u = new URL("file:///" + allPath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + file.getName());
// 文件名应该编码成UTF-8
} else { // 纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ file.getName());
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}
}
自己在项目中的一点总结,如有错误欢迎指出!