SpringMvc下载文件

使用springmvn文件上传

添加pom依赖

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>


配置springmvc-servlet.xml

 <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/>
    </bean>

form表单

<form  method="post" action="user/upload" enctype="multipart/form-data">
<input  type="text"  name="name"/>
<input  type="file"  name="file"/>
<input  type="submit"/>
</form>

控制器

@RequestMapping("/upload")
public String fileupload(String name,MultipartFile file) {
System.out.println("name:" + name);
System.out.println("OriginalFileName:" + file.getOriginalFilename());
System.out.println("size" + file.getSize());
if(!file.isEmpty()) {
InputStream inputStream = file.getInputStream();
//后面的该会了吧
}
return "";
}

导入excel

二、快速入门

2.1 引入maven依赖

<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-excel-core/ -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-excel</artifactId>
    <version>1.0.0</version>
</dependency>

2.2 定义Java对象

@ExcelSheet(name = "商户列表", headColor = HSSFColor.HSSFColorPredefined.LIGHT_GREEN)
public class ShopDTO {

    @ExcelField(name = "商户ID")
    private int shopId;

    @ExcelField(name = "商户名称")
    private String shopName;

    public ShopDTO() {
    }

    public ShopDTO(int shopId, String shopName) {
        this.shopId = shopId;
        this.shopName = shopName;
    }

    public int getShopId() {
        return shopId;
    }

    public void setShopId(int shopId) {
        this.shopId = shopId;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

}

2.3 Excel导出:Object 转换为 Excel

控制器

/**
 * @author Wgs
 * @version 1.0
 * @create:2017/11/14
 */
@Controller
public class UploadController {
    @PostMapping("/user/upload")
    public String fileupload(String name, MultipartFile file) throws IOException {
        System.out.println("name:" + name);
        System.out.println("OriginalFileName:" + file.getOriginalFilename());
        System.out.println("size" + file.getSize());
        List<Object> list = ExcelImportUtil.importExcel(ShopDTO.class, file.getInputStream());
        for (Object result : list) {
            System.out.println(result);
        }
        return "";
    }


}
// 参考测试代码:com.xuxueli.poi.excel.test.Test

/**
 * Excel导出:Object 转换为 Excel
 */
ExcelExportUtil.exportToFile(shopDTOList, filePath);

2.4 Excel导入:Excel 转换为 Object

// 参考测试代码:com.xuxueli.poi.excel.test.Test

/**
 * Excel导入:Excel 转换为 Object
  */
List<Object> list = ExcelImportUtil.importExcel(ShopDTO.class, filePath);

三、总体设计

3.1 功能定位

XXL-EXCEL 是在 Java 对象和 Excel 文档之间进行转换的迅速而灵活的工具。

3.2 Java 对象 和 Excel映射关系

-- Excel Java 对象
Sheet Java对象列表
表头 Sheet首行 Java对象Field
数据 Sheet一行记录 Java对象列表中一个元素

3.3 核心注解:ExcelSheet

功能:描述Sheet信息,注解添加在待转换为Excel的Java对象类上,可选属性如下。

ExcelSheet 说明
name 表/Sheet名称
headColor 表头/Sheet首行的颜色

3.4 核心注解:ExcelField

功能:描述Sheet的列信息,注解添加在待转换为Excel的Java对象类的字段上,可选属性如下。

ExcelField 说明
name 属性/列名称

四、版本更新日志

4.1 版本 V1.1.x,新特性[2015-12-05]

  • 1、Excel导出:支持Java对象装换为Excel,并且支持File、字节数组、Workbook等多种导出方式;
  • 2、Excel导入:支持Excel转换为Java对象,并且支持File、InputStream、文件路径、Workbook等多种导入方式;

TODO LIST

  • 1、单个Excel多Sheet导出导出;
  • 2、列合并导入导出;
  • 3、行合并导入导出;
  • 4、HSSFWorkbook=2003/xls、XSSFWorkbook=2007/xlsx 兼容支持;

使用SpringMVC优雅的下载文件

 @GetMapping("/download")
    @ResponseBody
    public ResponseEntity<InputStreamResource> downLoadFile(Integer id) throws FileNotFoundException {
        InputStream inputStream = diskService.downloadFile(id);
        Disk disk = diskService.findById(id);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachement",disk.getSourceName(), Charset.forName("UTF-8"));

        return new ResponseEntity<>(new InputStreamResource(inputStream),headers, HttpStatus.OK);
    }

   @GetMapping("/download")
    publicResponseEntitydownloadFile() throwsFileNotFoundException {
        Filefile = newFile("D:/upload/1.jpg");
        HttpHeadershttpHeaders = newHttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        httpHeaders.setContentLength(file.length());
        httpHeaders.setContentDispositionFormData("attachment", "照片.jpg", Charset.forName("UTF-8"));
        InputStreamResourceinputStreamResource = newInputStreamResource(newFileInputStream(file));
        returnnewResponseEntity(inputStreamResource, httpHeaders, HttpStatus.OK);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用首先需要了解他的工作原理 1.POI结构与常用类 (1)创建Workbook和Sheet (2)创建单元格 (...
    长城ol阅读 8,527评论 2 25
  • 《Java对象和Excel转换工具XXL-EXCEL》 一、简介 1.1 概述 XXL-EXCEL 是一个灵活的J...
    许雪里阅读 1,720评论 4 4
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,953评论 6 342
  • 转自链接 目录 1.认识NPOI 2.使用NPOI生成xls文件 2.1创建基本内容 2.1.1创建Workboo...
    腿毛裤阅读 10,691评论 1 3
  • 生活需要仪式感。 今年恰恰缺少了这种感觉。有时候会想,到底什么才是仪式感。大概就是整理好的床单,整齐的书桌,有条不...
    圜缳阅读 210评论 0 0