博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.上传文件
阅读量:7255 次
发布时间:2019-06-29

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

1.客户端编程

为了上传文件,必须将HTML表格的enctype属性值设为multipart/form-data,

Select a file
4

 

如果想上传多个文件,必须使用多个文件input元素

 

2.MultipartFile接口

在SpringMVC中处理已经上传的文件十分容易,上传到SpringMVC应用程序中的文件

会被包在一个MultipartFile对象中,你唯一的任务就是用类型为MultipartFile的属性编写一个

domain类

 

3.用Commons FileUpload上传文件

需要将两个jar文件复制到应用程序的WEB-INF/lib目录下,

commons-fileupload-x.y.jar

commons-io-x.y.jar

此外还需要在SpringMVC的配置文件中定义multipartResolver bean

 

4.Domain类

1 package app11a.domain; 2 import java.io.Serializable; 3 import java.util.List; 4  5 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.Size; 7 import org.springframework.web.multipart.MultipartFile; 8  9 public class Product implements Serializable {10     private static final long serialVersionUID = 74458L;11 12     @NotNull13     @Size(min=1, max=10)14     private String name;15 16     private String description;17     private Float price;18     private List
images;19 20 public String getName() {21 return name;22 }23 public void setName(String name) {24 this.name = name;25 }26 public String getDescription() {27 return description;28 }29 public void setDescription(String description) {30 this.description = description;31 }32 public Float getPrice() {33 return price;34 }35 public void setPrice(Float price) {36 this.price = price;37 }38 public List
getImages() {39 return images;40 }41 public void setImages(List
images) {42 this.images = images;43 }44 }

 

5.控制器

1 package app11a.controller; 2  3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7  8 import javax.servlet.http.HttpServletRequest; 9 10 import org.apache.commons.logging.Log;11 import org.apache.commons.logging.LogFactory;12 import org.springframework.stereotype.Controller;13 import org.springframework.ui.Model;14 import org.springframework.validation.BindingResult;15 import org.springframework.web.bind.annotation.ModelAttribute;16 import org.springframework.web.bind.annotation.RequestMapping;17 import org.springframework.web.multipart.MultipartFile;18 19 import app11a.domain.Product;20 21 @Controller22 public class ProductController {23 24     private static final Log logger = LogFactory25             .getLog(ProductController.class);26 27     @RequestMapping(value = "/product_input")28     public String inputProduct(Model model) {29         model.addAttribute("product", new Product());30         return "ProductForm";31     }32 33     @RequestMapping(value = "/product_save")34     public String saveProduct(HttpServletRequest servletRequest,35             @ModelAttribute Product product, BindingResult bindingResult,36             Model model) {37 38         List
files = product.getImages();39 40 List
fileNames = new ArrayList
();41 42 if (null != files && files.size() > 0) {43 for (MultipartFile multipartFile : files) {44 45 String fileName = multipartFile.getOriginalFilename();46 fileNames.add(fileName);47 48 File imageFile = new File(servletRequest.getServletContext()49 .getRealPath("/image"), fileName);50 try {51 multipartFile.transferTo(imageFile);52 } catch (IOException e) {53 e.printStackTrace();54 }55 }56 }57 58 // save product here59 model.addAttribute("product", product);60 return "ProductDetails";61 }62 63 }

保存上传文件只需MultipartFile.transferTo()方法

 

6.配置文件

1 
2
12 13
14
15 16
17 18
19
20
21 22
24
25
26
27 28
30
31
32 33
35 36
37
38
39
40
41
42
43
44 45
47
48
49 50
maxUploadSize:接受最大容量 7.JSP页面 ProductForm.jsp
1 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3  4  5  6 Add Product Form 7  8  9 10 11 
12
13
14
Add a product15

16 17

18
19

20

21 22

23

24

25 26

27

28

29 30 31

32

33 34 36

37
38
39
40 41

 

ProductDetil.jsp

1 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2  3  4  5 Save Product 6  7  8  9 
10

The product has been saved.

11

12

Details:
13 Product Name: ${product.name}
14 Description: ${product.description}
15 Price: $${product.price}16

Following files are uploaded successfully.

17
    18
    19
  1. ${image.originalFilename}20 21 ${image.originalFilename}"/>22
  2. 23
    24
25

26
27 28

 

8.测试应用

http://localhost:8080/app11a/product_save

 

转载地址:http://gnkdm.baihongyu.com/

你可能感兴趣的文章
Android三种播放视频的方式
查看>>
AOP方法增强自身内部方法调用无效 SpringCache 例子
查看>>
CentOS 7 安装 JDK
查看>>
正则表达式
查看>>
对配置文件内的固定内容加密解密
查看>>
epoll函数知识点
查看>>
pta l2-5(集合相似度)
查看>>
poj1019(打表预处理+数学)
查看>>
【转载】关于防火墙的初次接触
查看>>
集合和泛型 一
查看>>
php 把一个一维数组的值依次赋值到二维数组中的每一项
查看>>
CF_315C_Sereja and Contest
查看>>
vue,下级页面刷新导致路由跳转带过来的数据消失的解决方法
查看>>
border的简略
查看>>
echo
查看>>
接口测试工具-Jmeter使用笔记(九:跨线程组传递变量)
查看>>
(五)CXF之添加拦截器
查看>>
MySQL系列(四)
查看>>
C语言文件操作函数大全(超详细)
查看>>
sql语句
查看>>