一 . 文件上传至本地磁盘
1.首先,想实现文件上传,必须有对应的jar包
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/15be03dd3127f6902bc033f0941fd997.png)
2.再创建文件上传的.jsp文件(代码如下):
<%-- 请求方法: post 不限制数据大小
文件上传设置属性
enctype="multipart/form-data" --%>
<form action="/upload.do" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="file">
<input type="submit" value="上传">
</form>
3.SpringMVC配置(代码如下):
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
4.然后在控制层(也就是Controller层)编写文件上传的代码:
package com.zzx.util;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
public class FileController {
@RequestMapping("/upload")
public String toLocalDir(HttpServletRequest req)throws IOException{
MultipartHttpServletRequest mreq = (MultipartHttpServletRequest) req;
MultipartFile file = mreq.getFile("file");
String filename = this.createFileName(file.getOriginalFilename());
System.out.println("文件名 : "+filename);
File parent = new File("E:\\FileTest");
if (!parent.exists()){
parent.mkdir();
}
File targetFile = new File(parent,filename);
file.transferTo(targetFile);
System.out.println("上传成功");
return "pl";
}
public String createFileName(String oldname){
String [] split = oldname.split("\\.");
String suffix = split[split.length - 1];
String uuid = UUID.randomUUID().toString();
return uuid+"."+suffix;
}
}
5.然后配置web.xml
<servlet>
<servlet-name>dispathcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvcintercept.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispathcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
6.最后启动项目,测试文件上传
二.文件上传至服务器
1.文件上传至服务器使用的jar包和上面一致
2.文件上传的.jsp代码和上面一致
3.SpringMVC.xml的配置和上面一致
4.然后在控制层(也就是Controller层)编写文件上传的代码:
package com.zzx.util;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
public class FileController {
@RequestMapping("/upload2")
public String toWebDir(Model model, HttpServletRequest req)throws IOException{
MultipartHttpServletRequest mreq = (MultipartHttpServletRequest) req;
MultipartFile file = mreq.getFile("file");
String filename = this.createFileName(file.getOriginalFilename());
System.out.println("文件名 : "+filename);
ServletContext servletContext = req.getServletContext();
String realPath = servletContext.getRealPath("/images");
System.out.println(realPath+"服务器路径");
File parent = new File(realPath);
if (!parent.exists()){
parent.mkdir();
}
File targetFile = new File(parent,filename);
file.transferTo(targetFile);
System.out.println("上传成功");
return "pl";
}
public String createFileName(String oldname){
String [] split = oldname.split("\\.");
String suffix = split[split.length - 1];
String uuid = UUID.randomUUID().toString();
return uuid+"."+suffix;
}
}
5.然后配置web.xml
<servlet>
<servlet-name>dispathcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvcintercept.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispathcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
6.最后启动项目,测试文件上传