论坛首页 Java企业应用论坛

上传图片,如何请求转发到动态ip的服务器上

浏览 4384 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-12-16  
我的需求是:
通过网页或者手机通过http post上传一个图片,后台servlet接收到该HttpServletRequest实例后,根据一个工具类算法获取到处理给请求的服务器ip,然后将这个http request发送给该ip的服务器。
然后由该ip的服务器获取到网页或者手机上传的图片,存储到该服务器的本地磁盘上。

请问该怎样实现请求的转发呢?

我曾经考虑过使用jsp的forward,但forward只能转发到当前的servlet容器,而不能转发到其他ip的servlet.
我也考虑到用httpclient,但网上查到的例子,httpclient只能添加静态请求参数,而用户通过网页上传的图片跟填写的String还不一样,所以不确定httpclient是否可以实现我的需求。

或者哪位高手有更好的建议吗?请指点,多谢!

附:网页这样请求:
<form action="/pic/uploadPic" enctype="multipart/form-data"
method="post">
<table class="gridtable">
<tr>
<th>select pic:</th>
<td><input type="file" name="myfile" value="browse"></td>
</tr>
</table>
<p><input type="submit" value="submit"></p>
</form>
   发表时间:2015-12-16  
httpclient可以上传文件。
我的思路是做两次提交,首次从服务器A获取需要提交的服务器B;然后向服务器B提交文件上传请求。
你的A服务器感觉就像控制服务器。
0 请登录后投票
   发表时间:2015-12-17  
非常感谢您的回复。

我原本的目的是,当web端请求上传图片时,首先根据负载均衡算法,计算该请求应该落到哪台服务器上,例如服务器B,然后由服务器B来处理该请求。这样做的目的是通过负载均衡来处理高并发,降低服务器负载。

您的建议:
1.web请求发送到统一的一台服务器,如服务器A
2.服务器A将该图片存下来
3.然后再计算请求落到哪台服务器,如服务器B
4.服务器A将本地保存的图片发送到服务器B
这样在步骤1,2的时候,相当于单个服务器处理图片保存,当高并发的时候,效率会降低,造成用户响应非常慢的情况吧。

还有其他好的办法吗? 多谢啦,急求!
0 请登录后投票
   发表时间:2015-12-17   最后修改:2015-12-17
不是啊,我的意思就是A是NameNode,而B,C,D是DataNode;A是控制服务,做负责均衡用,返回需要上传的文件服务。不知道你水平如何,你可以看一下FastDFS文件上传的思路。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics