黑马程序员技术交流社区

标题: Java 单个文件的下载/传输 [打印本页]

作者: 专注的一批    时间: 2020-4-7 14:04
标题: Java 单个文件的下载/传输

文件传输的本质是将文件转化成字节流,作为附件写入到HttpServletResponse的OutputStream中。以服务器本地的文件传输为例,Java代码如下:

public void download(HttpServletResponse response) {

File file = new File("文件夹" + File.separator + "文件名称");

// 判断文件性质

if (!file.exists() || !file.isFile()) {

return;

}

String fileName;

try {

// 获取编码后的文件名

fileName = URLEncoder.encode(file.getName(), "utf-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

return;

}

// 设置编码

外汇常见问题http://www.kaifx.cn/lists/question/

response.setCharacterEncoding("utf-8");

// 设置媒体类型(此处以Excel文件举例)

response.setContentType("application/vnd.ms-excel;charset=UTF-8");

// 设置Header

response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

// 创健缓冲字节数组 一般情况下会根据实际要求设置在1kb-8kb,此处为2kb

byte[] buffer = new byte[2 * 1024];

try {

// 通过File 创健 FileInputStream

FileInputStream fis = new FileInputStream(file);

// 通过FileInputStream 创健 BufferedInputStream

BufferedInputStream bis = new BufferedInputStream(fis);

// 获取输出流

OutputStream os = response.getOutputStream();

while (bis.read(buffer) != -1) {

// 写操作

os.write(buffer);

os.flush();

}

// 关闭流

bis.close();

fis.close();

} catch (Exception e) {

e.printStackTrace();

}

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2