字节流
public void FileDownload(String fileName, HttpServletResponse response) {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
System.out.println(fileName);
try {
// 文件
String fn = new StringBuilder("static/sampleFile/").append(fileName).toString();
File file = new File(getClass().getClassLoader().getResource(fn).getFile());
// InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fn);
// 文件转字节流
byte[] fileByte = File2byteUtil.file2byte(file);
// 字节流输出
// utf-8文件头
// response.getOutputStream().write(239);
// response.getOutputStream().write(187);
// response.getOutputStream().write(191);
response.getOutputStream().write(fileByte);
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
public void FileDownload2(String fileName, HttpServletResponse response) {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
try {
// 文件
String fn = new StringBuilder("static/sampleFile/").append(fileName).toString();
System.out.println(fn);
InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fn);
// 读取字节流
byte[] b = new byte[2048];
while (inputStream.read(b) != -1) {
response.getOutputStream().write(b);
}
// 字节流输出
// utf-8文件头
// response.getOutputStream().write(239);
// response.getOutputStream().write(187);
// response.getOutputStream().write(191);
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
第一种方式是把文件转换为byte传输,但是在线上达成jar包之后,通过文件路径就没办法获取到jar包内的静态文件。 因此用第二种方式,直接字节流读取字节流输出就可以了。