/** * 远程服务下载类 * * @author jiyanle. * @date 2015/6/17 */ @Controller @RequestMapping(value = "download") public class FileDownload extends BaseController { /** * 远程服务器文件下载 * * @param request * @param response * @param fileDir 文件目录,相对于根目录 * @param fileName 指定下载保存后的文件名(含扩展名) * @return */ @RequestMapping(value = "downloadFile") public String downloadFile(HttpServletRequest request, HttpServletResponse response, String fileDir, String fileName) { PrintWriter out = null; // 目标远程服务器文件地址 String path = GlobalConfig.getImgServer() + "/" + fileDir; try { out = response.getWriter(); File file = new File(path); // 以流的形式下载文件。 URL url = new URL(path); HttpURLConnection uc = (HttpURLConnection) url.openConnection(); uc.connect(); // 远程服务器调用 InputStream fis = new BufferedInputStream(uc.getInputStream()); //url.openStream(); //new BufferedInputStream(new FileInputStream(path));//本地服务器调用 byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); response.setCharacterEncoding("utf-8"); //解决各浏览器的中文乱码问题 String userAgent = request.getHeader("User-Agent"); byte[] bytes = userAgent.contains("MSIE") ? fileName.getBytes() : fileName.getBytes("UTF-8"); // fileName.getBytes("UTF-8")处理safari的乱码问题 fileName = new String(bytes, "ISO-8859-1"); // 各浏览器基本都支持ISO编码 response.addHeader("Content-Disposition", String.format("p_w_upload; filename=\"%s\"", fileName)); //"p_w_upload;filename=" + toUtf8String(fileName)); response.addHeader("Content-Length", "" + uc.getHeaderField("Content-Length")); response.setContentType("application/octet-stream"); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (Exception e) { if (e instanceof FileNotFoundException) { out.print("服务器文件丢失!"); } else { out.print("下载异常"); } } return null; } }
远程服务器文件流下载方法【实例】
原创
©著作权归作者所有:来自51CTO博客作者GeeYL的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Linux远程服务器文件上传与下载
文章结构场景描述在日常开发场景中,不定时地会在远程服务器与本地之间进行文件传送。博文
文件上传与下载 Linux pscp SecureCRT 上传 -
js文件流下载通用方法
js文件流下载通用方法
js文件流下载通用方法 -
PHP使用文件流下载文件方法
PHP使用文件流下载文件方法 1、flush — 刷新输出缓冲2、ob_clean — 清空(擦掉)输出缓冲区注:
php 文件名 下载文件 文件大小 -
文件流下载
...
其他