SpringMVC文件操作及静态资源配置

文件上传

文件上传是工作中很常用的功能,SpringMVC也做了相应的封装。

1.添加FileUpload相关jar

在这里插入图片描述

2.表单提交

表单提交的方式必须是post提交。enctype必须是multipart/form-data

在这里插入图片描述

3.配置文件设置

在配置文件中注册CommonsMulipartResolver

在这里插入图片描述

​ 注意:CommonsMultipartResolver这个Bean的id必须为multipartResolver,因为CommonsMultipartResolver Bean是在DispatcherServlet中加载的,而DispatcherServlet是通过名字来查找这个Bean的。

4.接收文件

​ 形参声明为MultipartFile类型 变量名称必须和表单的name一直,如果有多个相同名称的文件上传可以设置类型为数组类型,同时接受多个

在这里插入图片描述


文件下载

​ 在SpringMVC中文件下载有两种方式:

1.基于ResponseEntity实现

@RequestMapping("/testHttpMessageDown")
public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException {
    // 需要下载的文件
	File file = new File("E://123.jpg");
    byte[] body = null;
    InputStream is = new FileInputStream(file);
    body = new byte[is.available()];
    is.read(body);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", "attchement;filename=" + file.getName());
    HttpStatus statusCode = HttpStatus.OK;
    ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
    return entity;
}

2.通用的方式

@RequestMapping("/exportExcel")
public void exportExcel(HttpServletRequest request,HttpServletResponse response) throws IOException{
	File file = new File("d://owned.xls");
	//设置响应头和客户端保存文件名
    response.setCharacterEncoding("utf-8");
    response.setContentType("multipart/form-data");
    response.setHeader("Content-Disposition", "attachment;fileName=" + file.getName());
    try {
        //打开本地文件流
        InputStream inputStream = new FileInputStream(file);
        //激活下载操作
        OutputStream os = response.getOutputStream();
        //循环写入输出流
        byte[] b = new byte[2048];
        int length;
        while ((length = inputStream.read(b)) > 0) {
            os.write(b, 0, length);
        }
        // 这里主要关闭。
        os.close();
        inputStream.close();
    } catch (Exception e){
        
        throw e;
    }
}

静态资源文件处理

在SpringMVC中,默认情况下,所有的静态资源都会被拦截(js,css。html,图片、视频、音频),对于静态资源,需要手动配置静态资源过滤。

有两种方式解决:

1.在web.xml中配置default servlet

 <!-- 防止资源文件被spring MVC拦截 -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

2.在配置文件中通过标签设置

 <!--  防止资源文件被spring MVC拦截--> 
<mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/>  
<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>  
<mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/> 

以上

@Fzxey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值