@PostMapping("/dowload")
public void dowload(HttpServletRequest request, HttpServletResponse response, String fileName) throws IOException {
OutputStream os = null;
InputStream fis = null;
FTPClient ftpClient = ftpFileUtil.getFTPClient();
try {
int index = fileName.indexOf("/");
String path = fileName.substring(0, fileName.indexOf("/", index + 1));
String name = fileName.substring(path.length() + 1, fileName.length());
ftpClient.changeWorkingDirectory(path);
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
if (name.equalsIgnoreCase(file.getName())) {
fis = ftpClient.retrieveFileStream(file.getName());
String agent = request.getHeader("user-agent");
if (agent.contains("FireFox")) {
name = new String(name.getBytes("UTF-8"), "iso-8859-1");
} else {
name = URLEncoder.encode(name, "UTF-8");
}
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
// // 将要下载的文件内容通过输出流写到浏览器
os = response.getOutputStream();
// // 设置下载文件的mineType,告诉浏览器下载文件类型,设置为任意类型
response.setContentType("application/octet-stream");//设置文件类型
int len = 0;
byte[] buffer = new byte[204800];
while ((len = fis.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
}
}
os.flush();
os.close();
ftpClient.logout();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
}
下载ftp上文件
最新推荐文章于 2024-08-23 15:54:50 发布