LigerUI、JFinal的上传文件、下载文件

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();
    	}
	}

自己在项目中的一点总结,如有错误欢迎指出!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值