java通用的下载方式就是读流的方式:就是将文件转换成java流然后将流在进行转化为文件
代码如下:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 获取文件路径
String filePath = request.getParameter("fileUrl");
// 创建文件对象
File file = new File(filePath);
// 获取文件名
String fileName = new String(file.getName().getBytes("ISO-8859-1"), "utf-8");
//以流的形式下载文件
BufferedInputStream bis =
new BufferedInputStream(new FileInputStream(file));
String fileDownloadUrl = "E:\\Code\\ideaCode\\educational\\src\\main\\webapp\\resource\\downloadFile\\";
// String fileSuffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// fileDownloadUrl = fileDownloadUrl + fileName + fileSuffix;
fileDownloadUrl = fileDownloadUrl + fileName;
// 输出文件
BufferedOutputStream out =
new BufferedOutputStream(
new FileOutputStream(fileDownloadUrl));
// 读取文件一次读取多少字节
byte[] bytes = new byte[2048];
int n = -1;
// 循环读取
while ((n = bis.read(bytes, 0, bytes.length)) != -1) {
//转换成字符串
String str = new String(bytes, 0, n, "UTF-8");
System.out.println(str);
//写入相关文件
out.write(bytes, 0, n);
}
//清除缓存
out.flush();
//关闭流
bis.close();
out.close();