只要你看到了这篇文章,想必已经知道了 new File("path")是不能正常获取到远程地址的文件内容的。
解决办法就是,将它换成
new URL(downLoadPath).openConnection().getInputStream()来处理。
下面是完全可用的代码:
@RequestMapping(value = "downloadFile")
public String downloadFile(String filename, String inputPath, final HttpServletRequest request, final HttpServletResponse response) {
// 实际路径
String downLoadPath = "http://212.212.212.212:9999/XXXX/upload/xwfb/046582/p1eivgpi8ebnj1h8c1307p4es594.rar";
byte[] buff = new byte[4096];
BufferedInputStream bis = null;
OutputStream bos = null;
try {
response.setHeader("content-type", "application/x-msdownload");
response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GBK"), "ISO8859-1"));
bos = response.getOutputStream();
bis = new BufferedInputStream(new URL(downLoadPath).openConnection().getInputStream());
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}