1、因为上传文件会使用到MultipartHttpServletRequest对象,我们需要在Springmvc配置文件中配置一个解析器
<!--为了使用到spring为我们提供的,MultipartHttpServletRequest对象,我们需要配置一个解析器 -->
<!-- 而且对于Bean组件要想正常运行,必须配置一个id属性 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 请求编码方式 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 上传文件大小 -->
<property name="maxUploadSize" value="10000000"/>
<!-- 缓冲区大小 -->
<property name="maxInMemorySize" value="1024"/>
</bean>
2、前端jsp代码
<div>
<span>上传附件:</span><input type="file" id="accessory1" name="accessory1" onchange="checkFile(this)" />
<font size="2" color="red">注意:上传文件大小不能超过10M</font>
</div>
//上传文件校验
function checkFile(file){
var flag = getFilesize(file);
if(!flag){
var fileInput = $("#accessory1");
//验证不通过,清空input框
fileInput.replaceWith(fileInput.clone());
}
}
var fileSize = 0; //文件大小默认为0
function getFilesize(file) {
/*(1)判断文件后缀类型*/
var strs = new Array(); //定义一数组
var pic1 = $(file).val(); //获取input框的值,文件路径
strs = pic1.split('.'); //分成数组存储
var suffix = strs[strs.length - 1]; //获取文件后缀
if (suffix != 'pdf' && suffix != 'docx' && suffix != 'doc'&& suffix != 'txt')
{
alert("仅能上传扩展名为pdf、docx、doc、text的文件!");
return false;
}
/*(2)获取文件大小,以Kb为单位*/
fileSize = file.files[0].size / 1024;
if (fileSize > 10000) {
alert("您选择的文件太大,请选择小于10M的文件!");
return false;
}
return true;
}
// 表单提交时执行的方法
var form = new FormData();
form.append("accessory1", $('#accessory1')[0].files[0]);
//后端请求处理
@RequestMapping(value="/addGg",method=RequestMethod.POST)
@ResponseBody
public boolean addGg(MultipartFile accessory1){//发布公告的同时是否有附件上传
if (accessory1 != null ) {
logger.info("<--带有附件公告发布开始-->");
InputStream is = null;
try {
is = accessory1.getInputStream();
byte[] b = new byte[is.available()];
is.read(b);
jjkjGggl.setAccContent(b);
} catch (IOException e) {
logger.info("<--附件读取异常!-->:"+e);
throw new RuntimeException("附件读取异常!");
} finally{
try {
is.close();
} catch (IOException e) {
logger.info("<--附件读取释放资源异常!-->:"+e);
throw new RuntimeException("附件读取释放资源异常!");
}
}
}return false;
}