`

Java 网络资源下载

    博客分类:
  • java
 
阅读更多

通过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多线程下载网络资源

    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网络...

    java网络编程下载器源代码

    Java网络编程下载器源代码是Java开发者学习网络通信和文件下载技术的重要资源。它通过实现HTTP、FTP等网络协议,展示了如何在Java中构建一个功能完备的文件下载工具。这个源代码可以帮助学习者深入理解Java的Socket...

    Java课程网络资源的建设与探索

    ### Java课程网络资源的建设与探索 #### 一、引言 随着信息技术的快速发展和互联网技术的广泛应用,网络课程已成为高等教育领域中一个重要的教学手段。《Java课程网络资源的建设与探索》一文以Java这一热门编程...

    java免费下载资源网站

    以下是一些可能的Java资源下载站点: 1. GitHub (https://github.com/) - 全球最大的开源软件托管平台,拥有众多Java项目。你可以在这里找到各种类型的Java项目,包括框架、库、工具和学习资料。 2. SourceForge ...

    java swing url下载器

    Java Swing URL下载器是一个利用Java Swing图形用户界面库开发的应用程序,主要用于从互联网上下载...通过学习这个项目,开发者可以深入理解Java Swing组件的使用、文件I/O操作、网络编程以及多线程下载的实现方法。

    JAVA管理系统资源下载

    【JAVA管理系统资源下载】这篇资料涉及的是一个基于Java的课程设计任务,旨在让学习者深入理解和实践Java编程技能。在数据通信系统背景的介绍中,我们可以看出,这种系统是军事信息化的重要组成部分,它通过网络通信...

    Java抓取网络资源并插入数据库

    Java抓取网络资源并插入数据库(附详细代码) 如有不懂处可加qq412546724

    一个简单的javase网络资源下载器

    Java SE网络资源下载器是一个基础的程序,用于从HTTP服务器获取并保存远程文件到本地计算机。这个工具在处理单个文件下载时非常实用,尤其对于开发者进行测试或学习时需要频繁下载特定文件的情况。让我们深入了解...

    java下载网络图片

    在Java编程中,下载网络图片是一项常见的任务,尤其在数据抓取、网页爬虫或构建图形界面应用时。本教程将深入讲解如何使用Java实现多线程下载网络图片,并涉及日志记录和网络速度监控。 首先,我们需要了解HTTP协议...

    java相关资源

    3. **3.JAVASE01.docx 和 4.JAVASE02.docx** - 这两个文档可能是Java标准版(Java SE)的连续教程,涵盖了更高级的主题,如集合框架(ArrayList,LinkedList,HashSet,HashMap等),I/O流,多线程,网络编程,反射...

    java网络资源介绍ppt

    以下是一些重要的Java网络资源的详细介绍: 1. IBM中国开发者网站(http://www-900.ibm.com/developerworks/cn): 这个网站是IBM提供的一个全面的技术学习平台,涵盖了Java、Linux、XML、安全和Web服务等多个技术...

    java从网络上下载图片

    1. **创建URL对象**:通过URL类,我们可以构建一个指向网络资源的链接。例如: ```java URL url = new URL("http://example.com/image.jpg"); ``` 2. **建立连接**:使用`openConnection()`方法打开与URL对应的...

    Java多线程下载网络图片

    在Java编程中,多线程是一项关键技能,尤其在处理并发任务时,如我们的示例——"Java多线程下载网络图片"。这个场景展示了如何利用多线程技术提高程序性能,减少用户等待时间,同时优化系统资源的使用。下面我们将...

    Java网络编程/Java网络编程实例

    Java网络编程是Java开发中的重要领域,它涵盖了网络应用程序的设计、实现和调试。在这个主题下,我们可以探讨多个关键知识点: 1. **Java Socket编程**:Java的Socket类提供了基于TCP/IP协议的网络通信能力。通过...

    Java网络编程(第4版)PDF

    《Java网络编程(第4版)》是一本深入探讨Java平台上的网络编程技术的专业书籍,适合想要提升Java通讯技术的学者阅读。此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的...

    网络蚂蚁Java版源码下载

    - URL和URLConnection:Java的URL和URLConnection类用于打开和读取网络资源,是实现下载功能的基础。 - HTTP协议:网络蚂蚁可能直接使用HTTP协议进行文件传输,理解HTTP请求和响应的构建及解析至关重要。 4. **IO...

    java下载网络图片到本地保存

    在Java编程中,下载网络图片并将其保存到本地是一个常见的任务,特别是在开发涉及网页抓取、数据备份或者网络资源管理的项目中。这个过程通常包括以下几个步骤:建立网络连接、发送请求、接收响应数据以及将数据保存...

Global site tag (gtag.js) - Google Analytics