最近遇到这样一个问题:
服务器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);
}
}
分享到:
相关推荐
内网架设服务器详解 内网架设服务器详解 内网架设服务器详解
内网用户通过域名或公网IP访问内部服务器的解决办法 在这个解决方案中,我们将讨论如何让内网用户通过域名或公网IP访问内部服务器。这个解决方案可以分为两部分,一部分是内网用户和内部服务器不在同一个网段,另一...
### Windows2012内网更新服务器部署 #### 一、概述 Windows Server 2012 R2的WSUS(Windows Server Update Services)是一种重要的工具,用于在组织内部集中管理和部署Windows系统的更新。通过WSUS,管理员可以...
之前做的FTP读取服务器上文件,后来为了安全,将ftp方式改成了SFTP... 在服务器上通过SFTP方式,跨区读取另一台服务器上的文件,这种方式读取的文件的文件名,尽量不要包含中文,否则可能由于乱码,导致文件无法获取。
标题中的“内部主机通过公网地址访问内网服务器配置案例”主要涉及的是网络配置技术,特别是如何使得局域网(LAN)内的主机能够通过公网地址访问并被外部网络上的主机访问到。这种技术在企业环境中非常常见,因为它...
内网NTP服务器通常会连接到互联网上的公开NTP服务器以获取准确时间,然后再将这个时间提供给内网中的其他设备。可以添加如`server ntp.pool.org iburst`这样的行来指定NTP服务器。 3. **限制访问**:为了安全考虑,...
- 启用该选项,并输入内网补丁服务器的URL地址。这一步是关键,它指定了客户端从哪里获取补丁更新。 - 保存更改。 ##### 4. 测试更新 - 完成以上配置后,可以在一台测试机上检查更新流程是否正常工作。 - 打开...
工具用于内网http文件服务器,实现临时文件共享;工具使用方式简单易用,无需调整系统环境,使用时授予工具内网及公网访问权限即可。
【frp 内网穿透 】内网穿透服务器部署文件、支持通过公网服务器跳转到本地服务端响应
架设内网WEB服务器
内网服务器加入Kubernetes(k8s)集群的部署是一个涉及多步骤的过程,涉及到网络配置、身份验证、证书管理等多个关键技术点。以下是对这个过程的详细解析: 首先,理解Kubernetes(简称k8s)是Google开源的一个容器...
- 有些网络环境可能通过代理服务器访问外网,这时直接获取的IP可能并非内网IP,而是公网IP或代理服务器的IP。 - 在动态分配IP地址的网络中,IP可能会改变,需要定期检查更新。 - 鉴于网络安全考虑,某些系统可能限制...
NOD32 4.2 搭建内网升级服务器教程 本篇教程旨在指导用户搭建一台 NOD32 4.2 的内网升级服务器,以便于在局域网中升级 NOD32 杀毒软件。...通过遵循本篇教程,用户可以快速搭建一台 NOD32 4.2 的内网升级服务器。
由于非法DHCP服务器的存在,部分内网机器可能错误地从非法服务器处获取了IP地址和其他网络参数,导致这些机器无法正常访问互联网和内网资源。 #### 三、DHCP服务器的工作原理 为了更好地理解如何查找非法DHCP服务器...
// 上传图片文件 FileInputStream fis = new FileInputStream(localPath); boolean success = ftp.storeFile(remotePath, fis); fis.close(); if (success) { System.out.println("图片上传成功"); } else {...
【内网FTP服务器对外开放方法】 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,常用于内部网络的文件共享。然而,如果想让外部网络的用户也能访问内网的FTP服务器,就需要进行一些配置...
"超详细图文详解nod32 4.2企业免费内网升级服务器...超详细图文详解nod32 4.2企业免费内网升级服务器搭建是指使用 NOD32 EAV 4.2、NOD32 Update Viewer 4.22.1和 IIS 搭建的内网升级服务器,提供文件下载和更新服务。
由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口。非80端口的映射在访问的时候...
- 指定Intranet Microsoft更新服务位置:输入WSUS服务器的内部URL,让客户端知道从哪里获取更新。 - 允许非管理员接收更新通知:允许非管理员级别的用户查看更新状态。 - 允许客户端目标设置:允许客户端指定其...
Java获取Linux服务器上的IP操作 Java获取Linux服务器上的IP操作是Java开发中的一项重要任务。然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux...