SpringMVC用的不太好,小白师傅是高人!!
先共享代码
/**
* download 方法
* <p>方法说明:以数据流的方式下载附件</p>
* @param id 要下载的附件id
* @param response
* @throws IOException
* @return void
* @author xiaobai
* @date 2011-8-29
*/
@RequestMapping("/download/{id}")
@ResponseBody
public void download(@PathVariable Long id, HttpServletResponse response)
throws IOException {
response.reset();
UploadFile uf = uploadFileService.get(id);
if (uf == null) {
throw new BusinessException("您下载文件不存在");
}
File file = new File(uploadFileService.getRoot()+uf.getUrl());
if (file == null||!file.exists()) {
throw new BusinessException("您下载文件不存在");
}
try {
response.addHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(uf.getName(),"utf-8"));
} catch (UnsupportedEncodingException e1) {
response.addHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(uf.getName(),"utf-8"));
}
response.addHeader("Content-Length", String.valueOf(file.length()));
response.setContentType("bin");
try {
outputFile(file, response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
throw new BusinessException("文件下载错误");
} catch (RuntimeException e) {
e.printStackTrace();
throw new BusinessException("文件下载错误");
}
}
下载
@RequestMapping("/uploadFile/{id}")
@ResponseBody
public String uploadFile(@PathVariable Long id,
@RequestParam MultipartFile file) throws IOException {
Map<String, Object> modelMap = new HashMap<String, Object>();
uploadFileService.uploadFile(id, file);
modelMap.put("success", true);
SimpleFilterProvider filterProvider = new SimpleFilterProvider();
return new ObjectMapper().filteredWriter(filterProvider)
.writeValueAsString(modelMap);
}
private void outputFile(File file, OutputStream outputStream) {
BufferedInputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(file));
byte[] b = new byte[1024];
int len = -1;
while ((len = is.read(b, 0, b.length)) != -1) {
outputStream.write(b, 0, len);
}
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
}
}
}
}
1,为什么要用@ResponseBody?
答:好处就是使用ajax,不用刷新.因为把返回值封装到response中了
2,前台就不用js写获取脚本,直接就无刷新吗?
答:当然不是,Spring默认有个convertor,会把你的map,list,object等转换成你想要的json格式,前台只需要接受这个json并解析输出到相应的dom上就行了.
3,没懂,我之前都是用out输出一个json
答:out?哪来.是response.writer?这个跟你用的原理是一样的,封装起来而已!
只要你return map,就是HashMap,return list,return obj;等就会把return的对象自动转换成json了
(MIME格式)
http://www.w3school.com.cn/media/media_mimeref.asp
分享到:
相关推荐
于是就决定发这个 无广告的小白文件管理器v2.8.0 只有5.8M 是安装在电视端的 我已经用了很久 所以才敢拿出来 首先 界面很清新吧 我主要用里面的多屏互动来传输文件 里面有个快速传输功能 在电脑或者手机浏览器上输入...
《小白文件管理器》是一款高效的文件管理器,尤其适合在电视这些大屏设备上使用:特别优化的操作流程保证了使用遥控器也能完成各种文件管理操作。功能上,除了支持最基本的安装、卸载、复制、粘贴、删除操作之外,还...
与其他移植到电视的文件管理器不同,小白文件管理器是完全针对电视来进行设计、开发,因此出色地适配了电视的各种操作方式,就算使用电视遥控器也能快速完成文件管理操作。此外,在小白文件管理器“智能分类,远程...
导致的问题是使用起来就不太方便了,比如用koa上传文件,网上资料有限,对于小白而言,文件上传操作就困难多了。 form表单上传文件流程(PHP和node js) 文件上传操作原理 form表单【注意:enctype=”multipart/form...
"易语言基础课程 课程四课 各内重点讲解 小白必备"这套教程显然是针对易语言初学者设计的,通过四个课程帮助学员掌握易语言的基础知识和核心技能。 在描述中提到,“这四课都是半懂 和不懂人学习必备”,这意味着这...
本章节内容涵盖了61页的详细讲解,确保由浅入深,让即使是编程小白也能轻松理解。 1. **文件操作的基本概念**: - 文件:存储在磁盘或其他存储介质上的数据集合。 - 文件对象:Python中通过内置的`open()`函数...
小白文件管理器.apk
一篇文章搞懂OFDM原理
标题中的“小白文件快速复制 vb6 带源码”表明这是一个使用Visual Basic 6 (VB6)开发的软件项目,主要功能是实现文件的快速复制,并且提供了源代码供学习和参考。VB6是微软在1998年推出的可视化编程工具,它允许...
YOLOv8 _ 代码逐行解析(二) _ 从yaml文件到模型定义(代码逐行注释,小白必看)_yolov8打印出的模型结构与yaml对应关系-CSDN博客(1).html
1. **文件解压**:RPA拆包工具能够自动对各种格式的压缩文件(如.zip、.rar、.7z等)进行解压,无需手动操作。这对于处理大量文件或者频繁需要解压的场景非常有效。 2. **批量处理**:用户可以一次性选择多个压缩...
小白老师购物管理系统,数据库sql server先添加表,再到vs打开后缀名为sln的文件,有问题联系873763505,尽可能帮助大家,谢谢!
标题中的“小白文件夹转硬盘 vb6 带源码”指的是一个使用Visual Basic 6(VB6)开发的小程序,其主要功能是将指定的文件夹模拟为一个虚拟硬盘,便于用户更有效地管理和组织文件。这个程序对于不熟悉复杂操作系统功能...
本教程"小白学数据挖掘与机器学习 基于SPSS Modeler实现"旨在帮助初学者掌握这些技能,通过实际操作来理解相关概念。SPSS Modeler是一款强大的数据挖掘工具,它提供了直观的图形用户界面,使得非编程背景的用户也能...
爱快小白固件 1.34
微信文件归档,可以帮你整理杂乱无章的各种视频图片
【作品名称】:基于 JSP 实现的仿163网盘无刷新文件上传 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于 JSP ...
作者通过清晰的讲解和丰富的实例,使初学者能快速上手。 在4年的发布历程中,教程历经5次重大更新,说明作者持续关注编程语言的发展趋势,以及教育领域的最新动态,以确保内容的时效性和实用性。同时,《关于作者》...
爱快小白1.3.4.bin 编程器烧录文件