`
leign
  • 浏览: 169030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过内网中间服务器获取URL文件(图片)

    博客分类:
  • JAVA
阅读更多
最近遇到这样一个问题:
服务器A不能上外网,但功能需求让它能获取URL的图片,于是想到用同域的另外一台能上外网的服务器B上进行中转。方法是,在服务器B其上写个JSP或Servlet,A通过访问B上的JSP或Servlet,B以流的形式吐出,A获取流数据并生成图片。


以下是主要的实现代码

A上的请求Action主要代码

try {
	String fileurl="http://www.iteye.com/upload/logo/user/166347/a62f68ef-ba87-3080-92ee-f95b3ff6189f.jpg?1257847065";	//图片外网地址
//	String midUrl = "http://B's_ip:port/service/getImageFromUrl.jsp" + "?url=" + 

fileurl;
	String midUrl = "http://192.168.106.28:8092/getImage.do" + "?url=" + fileurl;
						
	HttpURLConnection httpUrlCon = (HttpURLConnection)new URL(midUrl).openConnection();
	httpUrlCon.setDoOutput(true);
	httpUrlCon.setDoInput(true);
	httpUrlCon.connect();						
						
	InputStream inputs = httpUrlCon.getInputStream();
	BufferedImage image = ImageIO.read(inputs);
	
	File tmpFile = new File("temp\\tmpFile"+new Date());
	if(image!=null){
		ImageIO.write(image, "jpg", tmpFile);
	}
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
}


B上的服务Serlvet类
public class GetImageServlet extends HttpServlet{
	public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		String url = request.getParameter("url");
		System.out.println("url===="+url);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		
		String filePath = "\tmpPath\\tmpFile"+sdf.format(new Date())+".jpg";

		System.out.println("filePath===="+filePath);
		try{
			File tmpFile = new File(filePath);
			FileUtils.copyURLToFile(new URL(url), tmpFile);
			
			ServletOutputStream souts = response.getOutputStream();
			response.setContentType("image/jpeg");

			BufferedImage image = ImageIO.read(tmpFile);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(souts);
			JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
			encoder.encode(image, param);
			
			ImageIO.write(image,"jpeg",response.getOutputStream());

			souts.close();

		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		this.doGet(request, response);
	}
}
0
0
分享到:
评论

相关推荐

    内网架设服务器详解 内网架设服务器详解

    内网架设服务器详解 内网架设服务器详解 内网架设服务器详解

    内网用户通过域名或公网IP访问内部服务器的解决办法

    内网用户通过域名或公网IP访问内部服务器的解决办法 在这个解决方案中,我们将讨论如何让内网用户通过域名或公网IP访问内部服务器。这个解决方案可以分为两部分,一部分是内网用户和内部服务器不在同一个网段,另一...

    Windows2012内网更新服务器部署

    ### Windows2012内网更新服务器部署 #### 一、概述 Windows Server 2012 R2的WSUS(Windows Server Update Services)是一种重要的工具,用于在组织内部集中管理和部署Windows系统的更新。通过WSUS,管理员可以...

    在服务器上通过SFTP方式,跨区读取另一台服务器上的文件.zip

    之前做的FTP读取服务器上文件,后来为了安全,将ftp方式改成了SFTP... 在服务器上通过SFTP方式,跨区读取另一台服务器上的文件,这种方式读取的文件的文件名,尽量不要包含中文,否则可能由于乱码,导致文件无法获取。

    内部主机通过公网地址访问内网服务器配置案例

    标题中的“内部主机通过公网地址访问内网服务器配置案例”主要涉及的是网络配置技术,特别是如何使得局域网(LAN)内的主机能够通过公网地址访问并被外部网络上的主机访问到。这种技术在企业环境中非常常见,因为它...

    linux 搭建内网NTP服务器

    内网NTP服务器通常会连接到互联网上的公开NTP服务器以获取准确时间,然后再将这个时间提供给内网中的其他设备。可以添加如`server ntp.pool.org iburst`这样的行来指定NTP服务器。 3. **限制访问**:为了安全考虑,...

    windows内网补丁服务器客户端配置

    - 启用该选项,并输入内网补丁服务器的URL地址。这一步是关键,它指定了客户端从哪里获取补丁更新。 - 保存更改。 ##### 4. 测试更新 - 完成以上配置后,可以在一台测试机上检查更新流程是否正常工作。 - 打开...

    简单http内网文件服务器工具

    工具用于内网http文件服务器,实现临时文件共享;工具使用方式简单易用,无需调整系统环境,使用时授予工具内网及公网访问权限即可。

    【frp 内网穿透 】内网穿透服务器部署文件、支持通过公网服务器跳转到本地服务端响应

    【frp 内网穿透 】内网穿透服务器部署文件、支持通过公网服务器跳转到本地服务端响应

    架设内网WEB服务器

    架设内网WEB服务器

    内网服务器加入k8s集群部署文件

    内网服务器加入Kubernetes(k8s)集群的部署是一个涉及多步骤的过程,涉及到网络配置、身份验证、证书管理等多个关键技术点。以下是对这个过程的详细解析: 首先,理解Kubernetes(简称k8s)是Google开源的一个容器...

    获取内网ip地址3种方法

    - 有些网络环境可能通过代理服务器访问外网,这时直接获取的IP可能并非内网IP,而是公网IP或代理服务器的IP。 - 在动态分配IP地址的网络中,IP可能会改变,需要定期检查更新。 - 鉴于网络安全考虑,某些系统可能限制...

    nod32 4.2搭建内网升级服务器教程

    NOD32 4.2 搭建内网升级服务器教程 本篇教程旨在指导用户搭建一台 NOD32 4.2 的内网升级服务器,以便于在局域网中升级 NOD32 杀毒软件。...通过遵循本篇教程,用户可以快速搭建一台 NOD32 4.2 的内网升级服务器。

    内网非法DHCP服务器查找

    由于非法DHCP服务器的存在,部分内网机器可能错误地从非法服务器处获取了IP地址和其他网络参数,导致这些机器无法正常访问互联网和内网资源。 #### 三、DHCP服务器的工作原理 为了更好地理解如何查找非法DHCP服务器...

    java实现客户端上传图片到ftp服务器,nginx提供http服务下载图片

    // 上传图片文件 FileInputStream fis = new FileInputStream(localPath); boolean success = ftp.storeFile(remotePath, fis); fis.close(); if (success) { System.out.println("图片上传成功"); } else {...

    内网ftp服务器对外开放方法文件.pdf

    【内网FTP服务器对外开放方法】 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,常用于内部网络的文件共享。然而,如果想让外部网络的用户也能访问内网的FTP服务器,就需要进行一些配置...

    超详细图文详解nod32 4.2企业免费内网升级服务器搭建

    "超详细图文详解nod32 4.2企业免费内网升级服务器...超详细图文详解nod32 4.2企业免费内网升级服务器搭建是指使用 NOD32 EAV 4.2、NOD32 Update Viewer 4.22.1和 IIS 搭建的内网升级服务器,提供文件下载和更新服务。

    Nginx服务器作反向代理实现内部局域网的url转发配置

    由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口。非80端口的映射在访问的时候...

    基于虚拟化平台部署内网WSUS补丁服务器

    - 指定Intranet Microsoft更新服务位置:输入WSUS服务器的内部URL,让客户端知道从哪里获取更新。 - 允许非管理员接收更新通知:允许非管理员级别的用户查看更新状态。 - 允许客户端目标设置:允许客户端指定其...

    java获取linux服务器上的IP操作

    Java获取Linux服务器上的IP操作 Java获取Linux服务器上的IP操作是Java开发中的一项重要任务。然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux...

Global site tag (gtag.js) - Google Analytics