需求是这样的:
 有一个后端服务器保持文件,有一个前端服务器接受客户端IE的HTTP请求。
当客户端请求一个文件时,先通过前端服务器判断是否有权限,如果有,则
前端服务器到后端服务器取这个文件,然后转发给用户。两个服务器在一个
局域网,前端访问后端使用内网的HTTP,客户端不能直接访问后端服务器。
 如何实现前端服务器作为一个管道控制文件的发送,而不是把文件保持到
本地后再发给客户端IE?考虑前端使用代理方法,但好像走的是socket。
有没有其他更简单更好的办法?

解决方案 »

  1.   

    在后端服务器上部署一个webservice把文件读取成数据流,
    然后在前端服务器访问这个webservice,通过下面的代码,输出文件。
     byte[] bytearr;
            string sFileName = "文档1";
            //Response.Writebtarr, 0, btarr.Length);
            Response.AddHeader("Content-Disposition",
                                "attachment;FileName=" + HttpUtility.UrlEncode(sFileName, System.Text.Encoding.UTF8));
            Response.ContentType = "application/octet-stream";
            Response.BinaryWrite(bytearr);// (btarr);
            Response.Flush();
            Response.Close();
            Response.End(); 
      

  2.   

    to: upingking关键是前端服务器要转发给客户端,而不需要把整个文件保存下来,只是作为一个通道而已。
      

  3.   

    前端服务器往客户端写的是webserivice返回的byte数组
      

  4.   

    webservice的写法,至于怎么调用,很简单的。这样做前端的服务器只操作这个webservice返回的byte数组即可。
     [WebMethod]
        public byte[] file2ByteArray(string path)
        {
            System.IO.FileStream Fs = new System.IO.FileStream(path, System.IO.FileMode.Open);
            byte[] bytearr=new byte[Fs.Length];
            Fs.Read(bytearr, 0, Fs.Length);
            Fs.Close();
            return bytearr;
        }