使用easyUI中rowData和ajax实现从服务器下载文件
2018-01-18 11:19
387 查看
从服务器下载文件,个人总结主要的实现思路有:1、界面通过表单方式提交,服务器接受表单后通过读写流方式直接将保存在服务器端的文件下载下来。2、通过url直接传参读写流方式直接将保存在服务器端的文件下载下来。这两种思路都可以实现。而在easyUI框架中由于对url方式整合不当,通过url方式引来其他的错误。在这里使用以下方式实现:ajaxpost方式提交--->通过数据库查找到对应保存在服务器文件的id并保存于session中--->获取session中文件信息(文件名称、路径)--->通过文件读写流处理文件--->释放sessionA、在js中创建一个表单
B、接受ajaxpost请求
C、文件信息保存在session中
D、请求获取session处理文件并释放session
function toDownLoad(rowData) { $.messager.confirm('<fmt:message key="statTaskSet.title.download" />', '<fmt:message key="statTaskSet.text.info" />', function(r) { if(r){ $.easyuix.ajax({ "url":"toExport", "type":"POST", "data":{ id:rowData.id }, normal:function(data){ var form=$("<form>");//定义一个form表单 form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action","exportFile"); $("body").append(form);//将表单放置在web中 form.submit();//表单提交 $('#data_list').datagrid('reload'); } }) $("#data_list").datagrid('reload'); } }); } |
@RequestMapping(value = "/toExport", method = RequestMethod.POST) @ResponseBody public Result toExport(@RequestParam("id")Long id) { return statTaskSetService.exportFile(id); } |
public Result exportFile(Long id) { Result result = new Result(); StatTaskSet bean = statTaskSetMapper.findById(id); BusinessException.ASSERT.notNull(bean, "statTaskSet.error.notexist"); String tempPath = SysParamHolder.getValue(ParamValConstant.fileSavePath); BusinessException.ASSERT.notNull(tempPath, "statTaskSet.error.filepath"); MapObject mapSession = new MapObject(); mapSession.put("fileName", bean.getFileName()); mapSession.put("filePath", tempPath); mapSession.put("idkeys", id); WebUtil.sessionPut("taskFileMap", mapSession); return result; } |
@RequestMapping(value = "/exportFile", method = RequestMethod.POST, produces = "text/plain") @ResponseBody public void exportFile() { MapObject map = (MapObject) sessionGet("taskFileMap"); String path = (String) map.get("fileName"); String name = (String) map.get("filePath"); FileDownloadUtil.downloadByFile(path, name); sessionPut("taskFileMap", null);//釋放session } |
相关文章推荐
- Java Web实现使用浏览器从服务器下载文件(后台)
- PHP服务器文件管理器开发小结(十):使用jQuery和iframe实现AJAX文件上传
- 利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能
- 使用 JS 访问服务器地址实现下载文件
- Ajax使用FormData对象实现无刷新上传文件
- 使用Servlet实现浏览器从服务器下载文件
- Ajax——使用html配合php实现文件上传到服务器
- Openssh服务器的搭建,并使用PSFTP实现文件自动上传,下载的script命令
- 【转载】使用jsp实现文件上传到服务器或者从服务器上下载文件到本地计算机完整说明版
- Windows下配置ftp服务器,使用QT实现文件上传和下载
- 使用ajax 和 FormData 实现无刷新提交 带文本和文件的表单
- 在easyui的框架中,使用ajax实现批量上传图片到服务器
- 使用简单的wcf文件实现上传,下载文件到服务器
- 使用FormData进行Ajax请求上传文件到controller层的实现
- 使用ajaxFileUpload与SpringMVC实现异步上传下载文件并返回json数据
- php下载服务器端文件(禁止使用ajax提交请求)
- 使用html+ajax+formdata+SpringMVC实现单个文件,和多个文件上传功能
- 使用html+ajax+formdata+SpringMVC实现单个文件,和多个文件上传功能
- 【转载】使用jsp实现文件上传到服务器或者从服务器上下载文件到本地计算机完整说明版
- asp.net 实现下载服务器上的文件