SpringMVC文件上传和下载
2018-01-17 20:00
417 查看
1. 文件上传
SpringMVC通过MultipartResolver来实现文件上传,默认没有装配,使用MultipartResolver需要加上commons-fileupload这个jar包。
1.1 配置MultipartResolver
1.2 编写Controller方法
1.3 HTML页面编写
2. 文件下载
将文件发送资源发送到浏览器,需要完成以下几步:
对请求处理方法使用void返回类型,并在方法中添加HttpServletResponse参数。
将响应的内容类型设为文件的内容类型。Content-Type标题在某个实体的body中定义数据类型,并包含媒体类型和子类型标识符。如果不清楚内容类型,并且希望浏览器始终显示另存为对话框,则将他设为application/ectet-stream。
添加一个名为Content-Dispostion的Http响应标题,并赋值attachment;filename=fileName.
(1). 隐藏资源:可以将文件放在WEB-INF目录下,这样只有授权的用户才可以访问
(2).防止交叉引用:获取请求的referer属性,如果该属性值为空或者非预期值,则不将文件返回给浏览器。
Controller编写
总结:使用文件上传的步骤:配置依赖项(commons-fileupload),配置MultipartResolver,在Html页面的表单中注意添加method和enctype属性。文件下载步骤:设置文件头(Content-Disposition)、MIME类型和编码方式,将输入流写到HttpServletResponse的输出流中,最后注意刷新输出流,关闭流。
SpringMVC通过MultipartResolver来实现文件上传,默认没有装配,使用MultipartResolver需要加上commons-fileupload这个jar包。
1.1 配置MultipartResolver
<!--配置上传文件控件--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8"//文件编码 p:maxUploadSize="5242880"//文件最大上传大小 p:uploadTempDir="file:/home/rookie/temp"/>//临时存储路径
1.2 编写Controller方法
@RequestMapping("/upload") public @ResponseBody String upload(@RequestParam("file") MultipartFile file) throws IOException{ if(!file.isEmpty()){ file.transferTo(new File(this.getClass().getClassLoader().getResource("/").getPath()+file.getOriginalFilename()));//将文件从默认目录拷贝 return "success"; }else{ return "redirect:/welcome.jsp"; } }
1.3 HTML页面编写
<form action="upload" enctype="multipart/form-data" method="post">//enctype和method必须 <input type="file" name="file"/><br/> <input type="submit" value="upload"/><br/> </form>
2. 文件下载
将文件发送资源发送到浏览器,需要完成以下几步:
对请求处理方法使用void返回类型,并在方法中添加HttpServletResponse参数。
将响应的内容类型设为文件的内容类型。Content-Type标题在某个实体的body中定义数据类型,并包含媒体类型和子类型标识符。如果不清楚内容类型,并且希望浏览器始终显示另存为对话框,则将他设为application/ectet-stream。
添加一个名为Content-Dispostion的Http响应标题,并赋值attachment;filename=fileName.
(1). 隐藏资源:可以将文件放在WEB-INF目录下,这样只有授权的用户才可以访问
(2).防止交叉引用:获取请求的referer属性,如果该属性值为空或者非预期值,则不将文件返回给浏览器。
Controller编写
@RequestMapping("/download") public void download(@RequestHeader(value = "referer",defaultValue = "")String referer, HttpServletResponse response) throws IOException{ if("".equals(referer)) {//判断是否为盗链,浏览器直接输入地址无法下载 response.getWriter().write("Invalid Request"); return; } response.setContentType("application/javascript"); response.setCharacterEncoding("utf-8"); System.out.println(referer); response.setHeader("Content-Disposition","attachment;filename=jquery.js"); FileInputStream inputStream=new FileInputStream(this.getClass().getClassLoader().getResource("../../js/jquery-3.2.1.min.js").getPath());//文件为web根目录/js/jquery-3.2.1.min.js OutputStream outputStream=response.getOutputStream(); byte []bytes=new byte[1024]; while(inputStream.read(bytes)!=-1){ outputStream.write(bytes); } outputStream.flush(); outputStream.close(); inputStream.close(); }
总结:使用文件上传的步骤:配置依赖项(commons-fileupload),配置MultipartResolver,在Html页面的表单中注意添加method和enctype属性。文件下载步骤:设置文件头(Content-Disposition)、MIME类型和编码方式,将输入流写到HttpServletResponse的输出流中,最后注意刷新输出流,关闭流。
相关文章推荐
- SpringMVC文件上传下载
- SpringMVC文件(图片)上传,下载
- SpringMVC笔记(五)文件的上传下载
- ionic3 java服务器(SpringMVC) 文件的上传与下载
- Springmvc文件上传/下载
- myBatis + SpringMVC上传、下载文件
- SpringMVC之文件上传和下载
- SSM框架-SpringMVC 实例文件上传下载
- SpringMVC的文件上传与下载
- SpringMVC(三)—文件的上传和下载
- springmvc和servlet下的文件上传和下载(存文件目录和存数据库Blob两种方式)
- SpringMVC文件上传和下载
- springMVC教程(九)springMVC的文件上传于下载
- springmvc文件上传下载简单实现案例(ssm框架使用)
- springMVC文件上传下载-实例1
- springmvc文件上传下载简单实现案例(ssm框架使用)
- springMVC+FTP上传下载文件夹及文件
- SpringMvc 上传/下载 文件
- springmvc文件上传和文件下载
- SpringMVC中两种处理文件上传下载的方式.md