Struts2中文件上传请求转发问题求解

嗨,各位,我想实现一个Struts2的文件上传功能,客户端通过jsp页面上传文件,Struts2服务器端根据一定的策略将这个上传请求转发到别的机器上的Struts2子服务器端,并在子服务器端接收该服务。目前我使用的方式是Struts2+socket传输。试过用Servlet的转发和重定向都不行,不知道有没有人做过相关的工作

3个回答

一般来说,不同域的request是不可以重用的,所以按理说是不行的,但我觉得既然是request请求,他们的差别就在于这个请求里面的内容,包括 http header 和一些参数内容,你可以在A服务器调用B服务器的时候,将A发送的这些request模拟出来,给B服务器构造一个类型的request请求。

但是我又想了,这样对于上传文件并不可行啊,因为前台与服务器之间建立连接了,所以会传个文件,如果你模拟了http请求,可是你将这些请求转给B服务器的时候,客户端与B服务之间并没有建立连接,所以不可能能传文件的。

我不明白你为什么非要去转?在jsp里面直接调用B的webservice进行上传不久行了吗?

既然是不同的服务器之间,不如将服务端上传功能做成webservice,然后去调用。

A服务器的jsp发送上传文件请求,然后到struts2 的后台处理,这时A服务器的后台处理调用B服务器的上传Webservice,这样不就解决问题了?

除了你自己使用的Socket传输之外,我说一说我的想法:

假设本地服务器为A,对应于web应用webA
远端的服务器为B,对应于web应用webB
webA是当前用于上传文件的应用,webB是你所说的子服务器

方法一:
1、先将文件file.rar上传到当前A服务器的指定目录上,如/opt/upload
2、两种可选方案
1)webA通过Java的FTP操作,将文件发送到服务器B的指定目录上
2)上传完毕后,webA向webB发送一条信息,告诉他到A服务器的指定位置获取文件

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!