Springboot controller实现
输入想要下载文件的path,来实现文件的下载
package com.wgl.download.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
@Controller
@RequestMapping("/download")
public class DownloadController {
@RequestMapping("/file")
public void downloadFile(HttpServletResponse response){
String path = "/Users/mango/IdeaProjects/download/src/main/doc/accenture.md";
download(response,"accenture.md",path);
}
public void download(HttpServletResponse response,String fileName,String path){
try (FileInputStream inputStream = new FileInputStream(path)){
this.setResponseHeader(response,fileName);
OutputStream out;
out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.close();
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}