文件上传回顾
1、文件上传的必要前提
2、文件上传的原理分析
3、举例示范
首先设置文件上传的jsp页面
然后我们先导入解析上传文件时的requset所需要的依赖坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
然后编写controller的代码
@Controller
@RequestMapping("/user")
public class UserController {
/**
* 文件上传
* @return
*/
@RequestMapping("/fileupload1")
public String fileupload(HttpServletRequest request) throws Exception {
System.out.println("文件上传");
//使用fileupload组件完成上传
//上传的位置
String path = request.getSession().getServletContext().getRealPath("/uploads/");
File file = new File(path);
System.out.println(path);
if (!file.exists()){
file.mkdirs();
}
//解析request对象获取上传文件项
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//解析request
List<FileItem> items = upload.parseRequest(request);
//遍历
for (FileItem item : items) {
//进行判断,判断当前的item对象是否是上传的文件项
if (item.isFormField()){
//说明是一个普通的表单项
}else {
//说明是一个上传文件项
//获取到上传文件的名称
String filename = item.getName();
//把文件的名称设置为唯一的值,uuid
String uuid = UUID.randomUUID().toString().replace("-","");
filename = uuid+"_"+filename;
//完成文件上传
item.write(new File(path,filename));
//删除临时文件
item.delete();
}
}
return "success";
}
}
然后启动服务器部署该项目
然后查看服务器中我部署的位置成功上传了图片
SpringMVC传统方式文件上传
1、springMVC传统方式上传文件原理图解
注意两点:
- 上传文件的type属性为file的input的name必须和controller中获取解析之后的请求的的参数名相同(完全一致),并且该参数的类型为
MultipartFile
- 配置的文件解析器的bean的id必须为
multipartResolver
2、举例示范
先编写jsp的上传表单
然后配置文件上传解析器,再springmvc.xml中配置
bane的id必须为multipartResolver,可以给该bean对象配置属性,必须maxUploadSize属性,该属性就是设置上传的文件大小的最大值,
然后配置controller中的方法
SpringMVC跨服务器方式文件上传
1、分服务器的目的
在实际开发中,我们会有很多处理不同功能的服务器。例如:
- 应用服务器:负责部署我们的应用
- 数据库服务器:运行我们的数据库
- 数据库服务器:运行我们的数据库
- 文件服务器:负责存储用户上传文件的服务器。
使各个服务器各司其职,从而提高我们项目的运行效率
2、首先进行配置图片服务器
注意这两个接口不能和另一个服务器冲突
然后创建一个新的webapp项目,并且添加依赖
创建一个uploads包
然后图片服务器的东西就配置完了
3、spring跨服务器方式传文件
然后导入跨服务器传输文件的所需的jar包
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
然后配置controller类中的方法