1.编写form表单
2.springmvc编写
3.spring-web.xml配置
4.pox.xml
5.会出现的问题:
1.编写form表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>testupload</title>
</head>
<body>
<form action="http://localhost:8080/Blog/admin/uploading" modelAttribute="multiFileUploadForm" method="post"
enctype="multipart/form-data">
<input type="text" name="title"/><br/>
<input type="text" name="tag"/><br/>
<input type="text" name="summary"/><br/>
<input type="text" name="classification"/><br/>
<input type="file" name="multiUploadFile"/><br/>
<input type="submit" value="submit">
</form>
</body>
</html>
2.springmvc编写
A.封装到bean中
先编写一个bean类:
package com.imooc.dto;
import org.springframework.web.multipart.MultipartFile;
/**
*处理文章上传,Markdown解析为html
*/
public class MultiFileUploadForm {
private String title;
private String tag;
private String summary;
private String classification;
private MultipartFile multiUploadFile;
public MultiFileUploadForm(){
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getClassification() {
return classification;
}
public void setClassification(String classification) {
this.classification = classification;
}
public MultipartFile getMultiUploadFile() {
return multiUploadFile;
}
public void setMultiUploadFile(MultipartFile multiUploadFile) {
this.multiUploadFile = multiUploadFile;
}
}
springMVC编写:
/**
* 上传文章,将markdown解析成html
*/
@RequestMapping(value = "/uploading",
method = RequestMethod.POST)
@ResponseBody
public Result<String> uploadFile(@ModelAttribute("multiFileUploadForm") MultiFileUploadForm multiFileUploadForm){
System.out.println(multiFileUploadForm.getTag());
System.out.println(multiFileUploadForm.getTitle());
MultipartFile multiUploadFile = multiFileUploadForm.getMultiUploadFile();
if(multiUploadFile != null&&multiUploadFile.getSize() > 0){
try {
System.out.println("fileName:"+multiUploadFile.getOriginalFilename());
multiUploadFile.transferTo(new File("H:/uploading/"+multiUploadFile.getOriginalFilename()));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
B.不使用bean直接使用参数
/**
* 上传文章,将markdown解析成html
*/
@RequestMapping(value = "/uploading",
method = RequestMethod.POST)
@ResponseBody
public Result<String> uploadFile(MultipartFile multiUploadFile, HttpServletRequest request) {
String title = request.getParameter("title");
String tag = request.getParameter("tag");
System.out.println("tag:"+title);
System.out.println("title:"+tag); System.out.println("size:"+multiUploadFile.getSize());
if(multiUploadFile != null&&multiUploadFile.getSize() > 0){
try {
System.out.println("fileName:"+multiUploadFile.getOriginalFilename());
multiUploadFile.transferTo(new File("H:/uploading/"+multiUploadFile.getOriginalFilename()));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.spring-web.xml配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="104857600"></property>
<property name="maxInMemorySize" value="40960"></property>
<property name="resolveLazily" value="true"></property>
</bean>
4.pox.xml
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
5.会出现的问题:
springMVC使用multipartFile上传文件出错:MultipartHttpServletRequest: is a MultipartResolver configured?
这是因为的你的4.spring-web.xml没有配置,应该严格按照4.配置