博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMvc文件上传下载
阅读量:4102 次
发布时间:2019-05-25

本文共 8149 字,大约阅读时间需要 27 分钟。

文件上传和下载

使用SpringMvc包装的解析器(CommonsMultipartResolver)进行上传控制,需要引入apache的common-fileupload组件包

1.设置表单属性

文件
2.springmvc配置文件中添加文件解析器

3.action方法接收文件

@RequestMapping(value="/saveFood",method=RequestMethod.POST)	public String saveFood(Food food,MultipartFile imageUrl) throws Exception{		//获取文件的名字		String imagename = imageUrl.getOriginalFilename();		//将文件名存入对象   该对象的数据用于存入数据库		food.setImag(imagename);		//设置文件的存储路径    (该路径是项目发布后的路径,便于查看是用相对路径)		String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagename;		//将文件写入设置好的路径		imageUrl.transferTo(new File(absPath));		//将对象里的数据写入数据库		foodSerice.saveFood(food);	}

springMvc使用消息转换器ByteArrayHttpMessageConverter设置文件内容为响应体,通过设置响应头ContentDisposition通知浏览器下载的附近名称

@RequestMapping(value="/download",method=RequestMethod.GET)	public ResponseEntity
download(String imagePath) throws Exception{ //文件路径 String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagePath; //需要下载的目录文件 File file = new File(absPath); //设置响应头 HttpHeaders headers = new HttpHeaders(); //设置下载的文件的名称 转换文件名的编码 headers.setContentDispositionFormData("attachment", URLEncoder.encode(imagePath,"UTF-8")); //读取目标文件为二进制数组 byte[] fileByte = FileCopyUtils.copyToByteArray(file); //构建ResponseEntity对象 ResponseEntity
re = new ResponseEntity
(fileByte,headers,HttpStatus.CREATED); //将对象返回 return re; }
例:上传下载

依赖jar包

4.0.0
cn.et
SpringMvcLession
0.0.1-SNAPSHOT
war
org.springframework
spring-webmvc
4.2.0.RELEASE
org.springframework
spring-jdbc
4.2.0.RELEASE
mysql
mysql-connector-java
5.1.26
commons-fileupload
commons-fileupload
1.3.3
commons-io
commons-io
2.5
org.apache.openejb
javaee-api
5.0-1
provided
javax.faces
jsf-api
1.2_04
provided
javax.servlet
jstl
1.2
provided
javax.servlet.jsp
jsp-api
2.1
provided
javax.faces
jsf-impl
1.2_04
provided
${basedir}/src
${basedir}/WebRoot/WEB-INF/classes
${basedir}/src
**/*.java
maven-war-plugin
${basedir}/WebRoot
${basedir}/WebRoot
maven-compiler-plugin
1.5
1.5

web.xml配置文件

myFile
org.springframework.web.filter.HiddenHttpMethodFilter
myFile
/*
index.jsp
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
mvc
org.springframework.web.servlet.DispatcherServlet
1
mvc
/
index.jsp
springmvc配置(这里没有和spring配置一起使用)
前端页面-显示-下载

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
增加
图片 菜编号 菜名 价格
${pageScope.map.foodid } ${pageScope.map.foodname} ${pageScope.map.price}
添加-上传

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              My JSP 'saveFood.jsp' starting page    	
图片:
菜单名:
菜单价格:
控制层

package cn.et.controller;import java.io.File;import java.net.URLEncoder;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.util.FileCopyUtils;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.multipart.MultipartFile;import cn.et.conf.Food;import cn.et.serice.FoodSerice;@Controllerpublic class FoodController {	@Autowired	FoodSerice foodSerice;		@RequestMapping(value="/food",method=RequestMethod.GET)	public String queryFood(String foodname,Model model){		List
> list = foodSerice.queryFood(foodname); model.addAttribute("list", list); return "/foodList.jsp"; } /** * 添加菜品 上传 * @param food * @param imageUrl * @return * @throws Exception */ @RequestMapping(value="/saveFood",method=RequestMethod.POST) public String saveFood(Food food,MultipartFile imageUrl) throws Exception{ //获取文件的名字 String imagename = imageUrl.getOriginalFilename(); //将文件名存入对象 该对象的数据用于存入数据库 food.setImag(imagename); //设置文件的存储路径 (该路径是项目发布后的路径,便于查看是用相对路径) String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagename; //将文件写入设置好的路径 imageUrl.transferTo(new File(absPath)); //将对象里的数据写入数据库 foodSerice.saveFood(food); return "/foodList.jsp"; } /** * 下载文件 * @param imagePath * @return * @throws Exception */ @RequestMapping(value="/download",method=RequestMethod.GET) public ResponseEntity
download(String imagePath) throws Exception{ //文件路径 String absPath="E:/apache-tomcat-6.0.45/webapps/sml/images/"+imagePath; //需要下载的目录文件 File file = new File(absPath); //设置响应头 HttpHeaders headers = new HttpHeaders(); //设置下载的文件的名称 转换文件名的编码 headers.setContentDispositionFormData("attachment", URLEncoder.encode(imagePath,"UTF-8")); //读取目标文件为二进制数组 byte[] fileByte = FileCopyUtils.copyToByteArray(file); //构建ResponseEntity对象 ResponseEntity
re = new ResponseEntity
(fileByte,headers,HttpStatus.CREATED); //将对象返回 return re; } }
jdbc

url=jdbc\:mysql\://localhost\:3306/deskdriverClass=com.mysql.jdbc.Driveruserid=rootpassword=123456
显示

点击图片即可下载

添加-上传

你可能感兴趣的文章
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>
(python版)《剑指Offer》JZ13:调整数组顺序使奇数位于偶数前面
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
JSP/Servlet——MVC设计模式
查看>>
使用JSTL
查看>>
Java 8新特性:Stream API
查看>>
管理用户状态——Cookie与Session
查看>>
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>