编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

vue-admin-template下载导入模板

wxchong 2024-06-22 20:43:40 开源技术 11 ℃ 0 评论

1.import-excel.vue添加方法

async getTemplate() {
  window.location.href = '/admin/employee/template?fileName=' + '得分记录表.xlsx'
},

2.调用方法

<div class="drop">
<i class="el-icon-upload" />
<el-button type="text" @click="getTemplate">下载导入模板</el-button>
<span>将文件拖到此处或
<el-button type="text" @click="handleUpload">点击上传</el-button>
</span>
</div>

3.后端代码

// 下载resource下资源
@GetMapping("/template")
public void downloadTemplate(HttpServletRequest request, HttpServletResponse response){
    String fileName = request.getParameter("fileName");
    InputStream is = null;
    OutputStream os = null;
    try {
        is = this.getClass().getClassLoader().getResourceAsStream("template"+ File.separator+fileName);
        os = response.getOutputStream();
        byte[] bytes = StreamUtils.copyToByteArray(is);
        response.reset();
        //下面这两行是为了解决跨域,如果没有跨域这两行可以删除
        response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        response.setContentType("application/octet-stream;charset=utf-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
        response.addHeader("Content-Length", "" + bytes.length);
        os.write(bytes);
        os.flush();
    }catch (Exception e) {
        log.error("下载出错", e);
    }finally {
        try {
            if(os != null) {
                os.close();
            }
            if (is != null) {
                is.close();
            }
        }catch (Exception e) {
            log.error("关闭流出错", e);
        }
    }
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表