该下载模板文件方法,是在maven项目下,并且采用了Spring框架。
在maven项目的根目录下添加module.xlsx文件。
代码如下:
若是在自己的ide上运行,即本地运行,可以ResourceUtils.getFile()方法去获取文件:
@GetMapping("downloadFile")
public void getLoadFile(HttpServletResponse response) throws FileNotFoundException {
String fileName = "module.xlsx";
if (fileName != null) {
// 设置文件路径
File file = ResourceUtils.getFile("classpath:module.xlsx");
if (file.exists()) {
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
System.out.println("success");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
若是要打包发布到服务器上运行,则应使用ClassPathResource去获取文件流:
@GetMapping("downloadFile")
public void getLoadFile(HttpServletResponse response) throws IOException
{
String fileName = "module.xlsx";
if (fileName != null)
{
ClassPathResource resource = new ClassPathResource("module.xlsx");
if (resource.exists())
{
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
byte[] buffer = new byte[1024];
InputStream fis = null;
BufferedInputStream bis = null;
try {
fis = resource.getInputStream();
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
System.out.println("success");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}