场景:用户上传文件到服务器A,服务器A进行逻辑判断之后将文件转发到服务器B,服务器B对文件进行保存等处理。现在的问题是如何实现服务器A到服务器B的转发,我用HttpClient实现了转发,但是无法传输200M以上的文件,而且文件对象的表单数据类型必须是FormFile型的,File型的会报错,好像是参数类型不对之类的错误。请问1:如何用其他的方法实现服务器A到服务器B的转发
    2:如何解决传输200M以上的文件问题。

解决方案 »

  1.   

    说详细点,lan还是wan,bs还是cs,a到b打算用什么技术==
      

  2.   


    重定向能跳转过去 但是重定向的话 request中之前的信息就没了....
      

  3.   


    局域网 用户和服务器是b/s  a到b如果可以的话用java
    具体实现不限  
      

  4.   

    那就简单了,客户上传a,a找个地方暂存一下,然后用socket与b建立一个通道,传就是了。
      

  5.   

    贴上来点代码吧 说不定对大家还有点帮助~~~~~~
    HttpClient包是org.apache.commons.httpclient            //访问的地址     
                PostMethod filePost = new PostMethod(
                        "http://10.10.39.10:7001/web/TRS/tRSOperateAction.do");
                // 参数 actionType和 file文件对象 file是FormFile型的 试过几个其他的报错
                Part[] parts = { new StringPart("actionType", "processFile"),
                        new FilePart("file", objFile.getName(), objFile) };
                // 把参数设置到PostMethod 中
                filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
                // 定义HttpClient 对象
                HttpClient client = new HttpClient();
                // 设置最大的连接超时时间 没太大用处好像
                client.getHttpConnectionManager().getParams().setConnectionTimeout(1000000);            
              client.getHttpConnectionManager().getParams().setSoTimeout(1000000);
              // 执行访问 返回值是 http的状态 就是200 400 404 什么的
              int status = client.executeMethod(filePost);
      

  6.   

    socket不太会 能不能帮助写一点点 看一下
      

  7.   

    这样稳定,谁能保证客户给a传的时候一定能传完,a向b传的时候又不出问题
      

  8.   

    上传文件的时候会存在断网啊什么的,如果你直接转发过去会造成B的数据不完整
    先把文件上传到a,经过简单的校验检查之后再传给B这样可以保证B上的是完整正确的。socket网上很多资料的,就是流的操作