开始写一个导出的功能,研究了半天,最后还是用流将数据库的数据直接写入文件,然后前端请求连接,直接下载文件。
private void downloadConfig(Integer orgId,String name, String str) throws Exception{
ServletOutputStream out = null;
PrintStream ps = null;
FileInputStream ips = null;
try {
String downloadName = name + orgId + ".txt";
String path = configDir+"/" + downloadName;
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
ps = new PrintStream(new FileOutputStream(file));
ps.println(str);// 往文件里写入字符串
//响应头的设置
response.reset();
response.setCharacterEncoding("utf-8");`在这里插入代码片`
response.setContentType("multipart/form-data");
//设置下载文件的名字
response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
out = response.getOutputStream();
int len = 0;
ips = new FileInputStream(file);
byte[] buffer = new byte[1024 * 10];
while ((len = ips.read(buffer)) != -1){
out.write(buffer,0,len);
}
out.flush();
} catch (Exception e) {
e.println();
} finally {
try{
if(out!=null)out.close();
if(ps!=null)ps.close();
if(ips!=null)ips.close();
}catch (Exception e) {
e.println();
}
}
}
最后一定要注意关闭流,关闭流,关闭流,重要的事情说三遍,记得
if(out!=null)out.close();
if(ps!=null)ps.close();
if(ips!=null)ips.close();