通过Java 下载网络资源
1、通过url获取网络资源文件流
2、将文件流写入字节数组
3、将字节数组输出到客户端浏览器
4、这种方式文件名及扩展名根据URL自行定义
5、适用于图片 .xml .txt 等浏览器可直接解析的资源下载,其他资源可以直接根据URL进行下载
6、http client 下载方式
/** * 图片另存为 * @param request * @param response */ @RequestMapping("img_download") public void downloadHouseImg(HttpServletRequest request,HttpServletResponse resp){ String url = request.getParameter("img_url"); //获取网络图片 InputStream content = null; //创建零时文件 String timstamp = String.valueOf(System.currentTimeMillis()); HttpClient httpclient = new DefaultHttpClient(); Long contentLength = 0L; String[] fileName = url.substring(url.lastIndexOf("/") + 1).split("\\."); try{ HttpGet httpget = new HttpGet(url); HttpResponse response = httpclient.execute(httpget); if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity entity = response.getEntity(); content = entity.getContent(); contentLength = entity.getContentLength(); } byte[] buffer = new byte[contentLength.intValue()]; content.read(buffer); // 清空response resp.reset(); // 设置response的Header resp.addHeader("Content-Disposition", "attachment;filename=" + fileName[0]+fileName[1]); resp.addHeader("Content-Length", "" + buffer.length); resp.setContentType("application/octet-stream"); OutputStream toClient = new BufferedOutputStream(resp.getOutputStream()); toClient.write(buffer); toClient.flush(); toClient.close(); }catch(Exception e){ e.printStackTrace(); }finally{ httpclient.getConnectionManager().shutdown(); } }
7、进过测试 httpclient下载方式,图片会平凡出现不完整问题 提供以下流下载方法
public void downloadHouseImg(HttpServletRequest request,HttpServletResponse resp){ String url = request.getParameter("img_url"); String[] fileName = url.substring(url.lastIndexOf("/") + 1).split("\\."); //获取网络图片 InputStream content = null; String timstamp = String.valueOf(System.currentTimeMillis()); HttpClient httpclient = new DefaultHttpClient(); Long contentLength = 0L; try{ URL img = new URL(url); InputStream imgis = img.openStream(); resp.reset(); if(fileName != null && fileName.length >= 2){ resp.addHeader("Content-Disposition", "attachment;filename=" + fileName[0] + "." + fileName[1]); }else{ resp.addHeader("Content-Disposition", "attachment;filename=" + timstamp+".png"); } resp.setContentType("application/octet-stream"); OutputStream ots = resp.getOutputStream(); int size = 0; byte[] buffer = new byte[8192]; while((size = imgis.read(buffer)) != -1){ ots.write(buffer,0,size); } ots.flush(); ots.close(); imgis.close(); }catch(Exception e){ e.printStackTrace(); }finally{ httpclient.getConnectionManager().shutdown(); } }
相关推荐
JAVA网络下载程序 JAVA网络下载程序 JAVA网络下载程序 JAVA网络下载程序
Java多线程下载网络资源是一种优化的下载策略,它通过将大文件分割成多个部分,然后使用多个线程同时下载这些部分,以提高下载速度。这种方法尤其在处理高带宽需求或网络不稳定的情况下非常有效。以下是对这个Java...
然而,理解`URL`和`URLConnection`的基本工作原理仍然是必要的,因为它们是Java网络编程的基础。 总结来说,Java通过`java.net.URL`和`java.net.URLConnection`提供了访问网络资源的能力。开发者可以通过这两个类与...
Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络...
Java网络编程下载器源代码是Java开发者学习网络通信和文件下载技术的重要资源。它通过实现HTTP、FTP等网络协议,展示了如何在Java中构建一个功能完备的文件下载工具。这个源代码可以帮助学习者深入理解Java的Socket...
### Java课程网络资源的建设与探索 #### 一、引言 随着信息技术的快速发展和互联网技术的广泛应用,网络课程已成为高等教育领域中一个重要的教学手段。《Java课程网络资源的建设与探索》一文以Java这一热门编程...
以下是一些可能的Java资源下载站点: 1. GitHub (https://github.com/) - 全球最大的开源软件托管平台,拥有众多Java项目。你可以在这里找到各种类型的Java项目,包括框架、库、工具和学习资料。 2. SourceForge ...
Java Swing URL下载器是一个利用Java Swing图形用户界面库开发的应用程序,主要用于从互联网上下载...通过学习这个项目,开发者可以深入理解Java Swing组件的使用、文件I/O操作、网络编程以及多线程下载的实现方法。
【JAVA管理系统资源下载】这篇资料涉及的是一个基于Java的课程设计任务,旨在让学习者深入理解和实践Java编程技能。在数据通信系统背景的介绍中,我们可以看出,这种系统是军事信息化的重要组成部分,它通过网络通信...
Java抓取网络资源并插入数据库(附详细代码) 如有不懂处可加qq412546724
Java SE网络资源下载器是一个基础的程序,用于从HTTP服务器获取并保存远程文件到本地计算机。这个工具在处理单个文件下载时非常实用,尤其对于开发者进行测试或学习时需要频繁下载特定文件的情况。让我们深入了解...
在Java编程中,下载网络图片是一项常见的任务,尤其在数据抓取、网页爬虫或构建图形界面应用时。本教程将深入讲解如何使用Java实现多线程下载网络图片,并涉及日志记录和网络速度监控。 首先,我们需要了解HTTP协议...
3. **3.JAVASE01.docx 和 4.JAVASE02.docx** - 这两个文档可能是Java标准版(Java SE)的连续教程,涵盖了更高级的主题,如集合框架(ArrayList,LinkedList,HashSet,HashMap等),I/O流,多线程,网络编程,反射...
以下是一些重要的Java网络资源的详细介绍: 1. IBM中国开发者网站(http://www-900.ibm.com/developerworks/cn): 这个网站是IBM提供的一个全面的技术学习平台,涵盖了Java、Linux、XML、安全和Web服务等多个技术...
1. **创建URL对象**:通过URL类,我们可以构建一个指向网络资源的链接。例如: ```java URL url = new URL("http://example.com/image.jpg"); ``` 2. **建立连接**:使用`openConnection()`方法打开与URL对应的...
在Java编程中,多线程是一项关键技能,尤其在处理并发任务时,如我们的示例——"Java多线程下载网络图片"。这个场景展示了如何利用多线程技术提高程序性能,减少用户等待时间,同时优化系统资源的使用。下面我们将...
Java网络编程是Java开发中的重要领域,它涵盖了网络应用程序的设计、实现和调试。在这个主题下,我们可以探讨多个关键知识点: 1. **Java Socket编程**:Java的Socket类提供了基于TCP/IP协议的网络通信能力。通过...
《Java网络编程(第4版)》是一本深入探讨Java平台上的网络编程技术的专业书籍,适合想要提升Java通讯技术的学者阅读。此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的...
- URL和URLConnection:Java的URL和URLConnection类用于打开和读取网络资源,是实现下载功能的基础。 - HTTP协议:网络蚂蚁可能直接使用HTTP协议进行文件传输,理解HTTP请求和响应的构建及解析至关重要。 4. **IO...
在Java编程中,下载网络图片并将其保存到本地是一个常见的任务,特别是在开发涉及网页抓取、数据备份或者网络资源管理的项目中。这个过程通常包括以下几个步骤:建立网络连接、发送请求、接收响应数据以及将数据保存...