1:实现效果
2:java 代码
package com.csp.doc.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.charset.StandardCharsets;
/**
* @Author: LL
* @Description:
* @Date: Create in 14:49 2021/3/23
*/
@RestController
@RequestMapping("/doc/xxx")
public class Cspfindfile {
/**
* @param path
* @param response
*/
@GetMapping("/xxx/xxxxxxxx/download")
public void download(String path, HttpServletResponse response) {
try {
// path: 欲下载的文件的路径
File file = new File(path);
// 获取文件名 - 设置字符集
String downloadFileName = new String(file.getName().getBytes(StandardCharsets.UTF_8), "iso-8859-1");
// 以流的形式下载文件
InputStream fis;
fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
2:vue代码
- 标签
<a-button @click="ceshidownload(exleUrl)" type="primary" icon="download">测试下载2</a-button>
- 方法:
//测试下载
ceshidownload() {
window.open("http://127.0.0.1:9036/csp/doc/xxx/xxx/xxx/xxxxx?path=" + "D://ceshi.xlsx");
},