• springboot下载resources路径下的excel文件


    Excel文件位置:

    后台Controller代码如下:

    import org.apache.commons.io.IOUtils;
    import org.jeecg.common.aspect.annotation.AutoLog;
    import org.springframework.core.io.ResourceLoader;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    import java.io.InputStream;
    import java.net.URLEncoder;
    import java.nio.charset.StandardCharsets;
    
    @RestController
    @RequestMapping("")
    public class DownloadExcelTemplateController {
    
        @Resource
        private ResourceLoader resourceLoader;
        
        /**
         * 下载模板
         *
         * @param response
         */
        @AutoLog(value = "下载导入模板")
        @RequestMapping(value = "/downloadTemp")
        public void downloadExcel(HttpServletResponse response) {
            InputStream inputStream = null;
            ServletOutputStream servletOutputStream = null;
            try {
                String filename = "导入模板.xls";
                String path = "excel/bbb.xls";
                org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:" + path);
    
                response.setContentType("application/vnd.ms-excel");
                response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
                response.addHeader("charset", "utf-8");
                response.addHeader("Pragma", "no-cache");
                String encodeName = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
                response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName);
    
                inputStream = resource.getInputStream();
                servletOutputStream = response.getOutputStream();
                IOUtils.copy(inputStream, servletOutputStream);
                response.flushBuffer();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (servletOutputStream != null) {
                        servletOutputStream.close();
                    }
                    if (inputStream != null) {
                        inputStream.close();
                    }
                    // jvm的垃圾回收
                    System.gc();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    如果下载的excel文件提示损坏无法打开,在pom.xml文件中添加避免压缩的插件

    <build>
            <plugins>
                <!-- 避免excel文件压缩破坏 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.2.0</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                    </configuration>
                </plugin>
            </plugins>
        </build>
  • 相关阅读:
    静态类型的 NSUserDefaults
    [转]iOS 10.2 XCode 8.2 证书申请 远程推送 打包上架
    [转-备忘]iOS11.0后APP的图标和启动图
    [转-备忘] iOS navigationBar
    测试管理_关于测试管理职位的招聘面试题
    [性能测试]关于在线用户线大于10万用户的测试
    [稳定性测试]性能测试之稳定性测试培训
    [LoadRunner]LR11安装或破解时报错的解决方法
    [windows]win10家庭版切换到管理员账户
    [缺陷管理]缺陷处理机制
  • 原文地址:https://www.cnblogs.com/chyf1990/p/16007324.html
Copyright © 2020-2023  润新知