package com.example.hzt.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
@RequestMapping("/file")
public class getFile {
// public void findfile(HttpServletRequest request, HttpServletResponse response, @RequestParam("id") String id, @RequestParam("tzggid") String tzggid) throws IOException {
@RequestMapping("/test")
public void findfile(HttpServletRequest request, HttpServletResponse response) throws IOException {
ServletOutputStream out = null;
FileInputStream ips = null;
String url ="C:\\Users\\hztyz\\Desktop\\test.docx";
//获取文件存放的路径
File file = new File(url);
String fileName=file.getName();
// //获取到文字 数据库里对应的附件名字加上老的文件名字:filename 截取到后面的文件类型 例:txt 组成一个新的文件名字:newFileName
// String newFileName = String.valueOf(list.get(0).get("fjname")).split(";")[Integer.parseInt(id)]+"."+fileName.substring(fileName.lastIndexOf(".")+1);
if(!file.exists()) {//如果文件不存在就跳出
return;
}
ips = new FileInputStream(file);
response.setContentType("multipart/form-data");
// //为文件重新设置名字,采用数据库内存储的文件名称
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String test = "日报 ";
String dateNowStr = sdf.format(date);
// String header = new StringBuilder().append("attachment;filename=").append("日报 ").
// append(dateNowStr).toString();
String header = new StringBuilder().append("attachment;filename=").append(new String(test.getBytes("UTF-8"),"ISO8859-1")).
append(dateNowStr).append(".docx").toString();
// response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(newFileName.getBytes("UTF-8"),"ISO8859-1") + "\"");
response.addHeader("Content-Disposition", header);
response.addHeader("connection", "close");
out = response.getOutputStream();
//读取文件流
int len = 0;
byte[] buffer = new byte[1024 * 10];
while ((len = ips.read(buffer)) != -1){
out.write(buffer,0,len);
}
out.flush();
out.close();
ips.close();
}
}