A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


文件传输的本质是将文件转化成字节流,作为附件写入到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();

}

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马