mui下载文件

html 

		
				
		

 mui端

mui('body').on('tap', 'a', function(e) {
		var id = this.getAttribute('id');
			if(id == "download"){
			var file_id = this.getAttribute('file_id');
			    var btnArray = ['否', '是'];
				mui.confirm('是否确定要下载该文件?', '', btnArray, function(e) {
				if (e.index == 1) {
					createDownload(file_id);
				} else {
								
				}
				});
					
			}
});


	
function createDownload(file_id) {
		var path= '/emp/EmpAction?handler=&file_id='+file_id;
		var downToak =plus.downloader.createDownload(path, {retryInterval:10}, function(d, status){
			if(status == 200){
				var btnArray = ['否', '是'];
				mui.confirm('是否打开该附件?', '下载完成', btnArray, function(e) {
					if (e.index == 1) {
						plus.runtime.openFile(d.filename, {}, function(e) {//打开文件
							plus.nativeUI.toast('打开失败');
						});
					} else {
					}
				});
				
			}else{
				console.log(2) 
				plus.nativeUI.alert("下载失败!");  
			
			}
		});
		
		downToak.start();
}

http://www.html5plus.org/doc/zh_cn/downloader.html 

 

java端

	public static void downloadfile(HttpServletRequest request, HttpServletResponse response) throws IOException {
		String file_id = CommFunc.getParameter(request, "file_id", "");//获取id,主要用查询数据库中存进的文件名称
		if (!"".equals(file_id)) {
			Map info = Service.getInfo(file_id);
			// 获取实际路径
			Properties prop = new Properties();
			///UploadUtils:工具类,system.properties:配置文件,作用:加载配置文件,获取配置文件里面的上传路径。filePath:D:/Files/upload
			prop.load(UploadUtils.class.getResourceAsStream("/system.properties"));
			String fileDir = prop.getProperty("filePath");//得到路径:D:/Files/upload
			File dstFile = new File(fileDir);
			File dst = new File(dstFile.getPath() + "/" + info.get("file_name"));//获取数据库中上传文件名字,拼接下载路径。
			// 下载本地文件
			String fileName = info.get("file_name"); // 文件的默认保存名
			
			fileName =java.net.URLEncoder.encode(fileName,"UTF-8");//很重要!!!如果没有这样编码文件名,下载的时候,如果是中文,会不执行mui的代码。
			// 读到流中
			InputStream inStream = new FileInputStream(dst);// 文件的存放路径
			// 设置输出的格式
			response.reset();//来清除首部的空白行
			response.setContentType("bin");//是设置文件类型的,bin这个文件类型是不存在的,浏览器遇到不存在的文件类型就会出现一个下载提示
			response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");//设置下载头和名字
			// 循环取出流中的数据
			byte[] b = new byte[2048];
			int len;
			try {
				while ((len = inStream.read(b)) > 0)
					response.getOutputStream().write(b, 0, len);
				inStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}

 

你可能感兴趣的:(mui)