织梦商城网站模板,河北邢台特产,做车展的网站,优化英文业务场景#xff1a;因为公司会对excel文档加密#xff0c;通过svn或者git上传代码也会对文档进行加密#xff0c;所以这里将文档后缀去了#xff0c;这样避免文档加密。
实现思路#xff1a;将文档去掉后缀#xff0c;放入resources下#xff0c;获取输入流#xff0…业务场景因为公司会对excel文档加密通过svn或者git上传代码也会对文档进行加密所以这里将文档后缀去了这样避免文档加密。
实现思路将文档去掉后缀放入resources下获取输入流最后加上后缀前端成功下载
效果图 上代码
package com.***.util;import cn.hutool.core.util.StrUtil;
import org.springframework.core.io.ClassPathResource;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;/*** author longwei* Description excel帮助类* date 2023/8/30 14:36*/
public class ExcelUtils {/*** 从静态资源下载文件** param fileName 文件名,没有后缀* param suffix 文件后缀* param request request* param response response*/public static void downloadFileByLocalPath(HttpServletRequest request, HttpServletResponse response,String fileName, String suffix) throws Exception {if (StrUtil.isEmpty(fileName) || StrUtil.isEmpty(suffix)) {throw new RuntimeException(文件信息不能为空);}InputStream inputStream new ClassPathResource(file File.separator fileName).getInputStream();fileName fileName suffix;downFileByInputStream(request, response, inputStream, fileName);}public static void downFileByInputStream(HttpServletRequest request, HttpServletResponse response, InputStream inputStream, String fileName) throws Exception {byte[] buffer new byte[1024];BufferedInputStream bis null;OutputStream os null;String finalFileName;try {final String userAgent request.getHeader(USER-AGENT);//IE浏览器if (StrUtil.contains(userAgent, MSIE) || StrUtil.contains(userAgent, Trident)) {finalFileName URLEncoder.encode(fileName, UTF8);}//google,火狐浏览器else if (StrUtil.contains(userAgent, Mozilla)) {finalFileName new String(fileName.getBytes(), ISO8859-1);}//其他浏览器else {finalFileName URLEncoder.encode(fileName, UTF8);}response.setCharacterEncoding(UTF-8);// 设置强制下载不打开response.setContentType(application/force-download);// 设置文件名response.addHeader(Content-Disposition, attachment;fileName finalFileName);bis new BufferedInputStream(inputStream);os response.getOutputStream();int i bis.read(buffer);while (i ! -1) {os.write(buffer, 0, i);i bis.read(buffer);}} catch (Exception e) {e.printStackTrace();} finally {if (inputStream ! null) {try {inputStream.close();} catch (Exception e) {e.printStackTrace();}}if (bis ! null) {try {bis.close();} catch (Exception e) {e.printStackTrace();}}if (os ! null) {try {os.flush();os.close();} catch (Exception e) {e.printStackTrace();}}}}}controller层 RequestMapping(/downloadTemplate)public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) {breedInfoService.downloadTemplate(request, response);}service.impl层这里直接用ExcelUtils方法 Overridepublic void downloadTemplate(HttpServletRequest request, HttpServletResponse response) {String fileName 中药饮片导入模板;try {ExcelUtils.downloadFileByLocalPath(request, response, fileName, .xlsx);} catch (Exception e) {log.error(下载中药饮片导入模板失败-{}, e.getMessage());throw new BusinessException(下载中药饮片导入模板失败,请联系管理员);}}