create table student(
id int(5) primary key auto_increment,
name varchar(255) not null,
age int(3) not null,
score double (3,2) not null,
filename varchar(255) ,
filetype varchar(255)
)
insert into student values(default,'小猪',0,0,default,default);
insert into student values(default,'小蓉',0,0,default,default);
insert into student values(default,'小赫',0,0,default,default);
insert into student values(default,'小露',0,0,default,default);
[A] 提交方式method="post"
[B]enctype="multipart/form-data" 二进制流
页面完整代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户注册</title>
</head>
<body>
<%--
必须注意:
[A] 提交方式method="post"
[B]enctype="multipart/form-data" 二进制流
--%>
<h3>用户添加</h3>
<form method="post" enctype="multipart/form-data" action="fileUpload">
<p>
用户名:<input type="text" name="name"/>${msg}
</p>
<p>
分数:<input type="text" name="score"/>
</p>
<p>
年龄:<input type="text" name="age"/>
</p>
<p>
文件:<input type="file" name="fi"/>
</p>
<p>
<input type="submit" value="提交"/>
</p>
</form>
</body>
</html>
applicationContext-mvc.xml
<!--静态资源放行-->
<mvc:resources mapping="/static/**" location="/static/"/>
<mvc:resources mapping="/upload/**" location="/upload/"/>
<!--创建文件上传的组件对象-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件 ,文件名称中文乱码-->
<property name="defaultEncoding" value="utf-8"></property>
<!--<property name="maxUploadSize" value="20000"></property>-->
</bean>
applicationConetxt-mvc.xml
有文件夹就是用,没有就创建
上传本地文件夹写法
上传服务器
一般出了错的话,用户体验会非常不好,一般都会跳转到一个可爱的页面来提示用户,出错啦
所以每当出现预料之外的错误的时候,都会通过配置异常解析器先跳到错误页面
applicationConetx-mvc.xml
<!--自定义异常解析器-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--异常的全路径,必须注意是Spring抛出的异常-->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error.jsp</prop>
</props>
</property>
</bean>
完整代码
package com.lin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
public class FileController {
@RequestMapping("fileUpload")
public String fileUpload(String name, int age, int score, MultipartFile file, HttpServletRequest req) throws IOException {
//定位上传位置并创建文件夹
File dir = new File(req.getServletContext().getRealPath("/upload"));
//如果不存在,就创建
if (!dir.exists()){
dir.mkdirs();
}
//验证文件的格式
String contentType = file.getContentType();//图片文件类型是MIME开头的
if (!contentType.startsWith("image/")){
req.setAttribute("msg","文件类型错误");
return "error";
}
//获取文件的大小
long size = file.getSize();
if(size > 102400){
req.setAttribute("msg","文件过大");
return "error";
}
//获取上传文件的原始名称
String oneme = file.getOriginalFilename();
//生成新的的随机名称
/*UUID生成随机数,截取.后的名称类型*/
String newName = UUID.randomUUID().toString() + oneme.substring(oneme.lastIndexOf("."));
//将上方名称的文件存到目录中 定位上传的文件对象
File newFile = new File(dir,newName);
//将文件进行上传
file.transferTo(newFile);
return "redirect:/success.jsp";
}
}
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!