`

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多线程下载网络资源,已打成可执行jar包,下载时只需修改相应配置文件即可

    Java网络抓包 Java网络抓包

    Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络抓包Java网络...

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

    Java课程网络资源的建设与探索,论述了建设面向计算机专业及其他专业的JAVA课程网络资源的建设和探索思想。

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

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

    java访问网络资源

    java与服务器交互数据,urlconnection用法。

    Java多线程下载网络图片

    这个是关于Java多线程方面的技术,就是多个线程发送请求,从互联网上下载图片资源,通过这个案例可以知道Java中的多线程的基础知识

    java网络资源介绍ppt

    Java网络资源介绍ppt,sun中国技术社区,Java的官方网站和综合信息网站介绍

    JAVA管理系统资源下载

    它是采用网络通信技术和应用协议,实现机载、陆地和舰载战术数据系统之间的数据信息交换,从而最大限度地发挥战术系统效能的系统。它由系统设施、通信规程和应用协议组成。而数据通信系统技术实质上就是一整套通信...

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

    简单的网络下载器,仅支持http资源下载.

    Java Socket网络编程.pdf

    Java Socket网络编程.pdf 学习资料 复习资料 教学资源

    java课程设计资源合集

    Java 不依赖平台的特点使得它受到广泛的关注,Java 已成为网络时代最重要的语言之一。 Java 语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。目前,很多新的技术领域都...

    用JAVA实现远程图片批量下载

    阐述了如何在Java中,利用 HTML文档之间的链接关系,使用 Java内置的线程机制、网络通讯库和 Swing HTML解析 器实现基 于Web的图片批量下载。对Web上一些其它资源的批量下栽 。也可采用想类似的方法实现。在面向网络...

    java网络编程资源

    详细介绍了基于JAVA的网络编程,适合初学者使用,是一个比较基础的资料。

    java源码包实例源码JAVA开发源码50个合集.zip

    Java坦克大战网络对战版源代码.rar Java声音播放程序源代码.rar JAVA实现CLDC与MIDP底层编程的代码.rar Java实现HTTP连接与浏览,Java源码下载.rar Java实现的FTP连接与数据浏览程序.rar Java实现的放大镜效果附有...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    通过JAVA语言实现使用URL访问网络资源

    通过JAVA语言实现使用URL访问网络资源,

    《Java网络编程实例:Java网络编程实例》

    《Java网络编程实例:Java网络编程实例》一书的光盘资源,包括各章的源代码实例,需要学习的朋友看看

    java网络编程视频教程

    很不错的java网络编程的视频教程,十分详细地介绍了java网络编程中的各个知识点

    手机版word(java程序,网络资源)

    手机版word(java程序,网络资源)

Global site tag (gtag.js) - Google Analytics