【问题标题】:send file stream through http not working通过http发送文件流不起作用
【发布时间】:2019-11-26 09:29:19
【问题描述】:

我正在使用 fluentftp 库。

我有 2 个服务器,分别是 FTPserver 和 WebServer。所以我的方案是从 ftp 服务器下载大文件并通过 http ajax 响应将其发送到我的客户端。我创建了一个 webservice .asmx 文件和一个 webmethod 来创建下载数据。

这是我发送数据块的代码,但浏览器中没有发生任何事情。

[WebMethod(enableSession: true)]
public void GetDownload(string brandName, string modelName, string osName, string file)
{
  if (!FtpConnect())
            throw new Exception("Error ftp connection.");
  byte[] buffer = new byte[1024];
  string path = "disk1/Drivers/" + GetFtpBrands(brandName) + "/" + modelName + "/" + osName + "/"  +file;
  HttpContext.Current.Response.Clear();
  HttpContext.Current.Response.ClearContent();
  HttpContext.Current.Response.BufferOutput = true;
  HttpContext.Current.Response.ContentType = "application/octet-stream";
  HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + file);
  FtpDataStream inputStream = (FtpDataStream) ftp.OpenRead(path,FtpDataType.Binary);

  int read = 0;
  while ((read = inputStream.Read(buffer, 0, buffer.Length)) > 0)
  {
       HttpContext.Current.Response.OutputStream.Write(buffer, 0, read);
       HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
  }
  inputStream.Close();
  HttpContext.Current.Response.OutputStream.Close();
}

【问题讨论】:

    标签: c# asp.net fluentftp


    【解决方案1】:

    我在 <system.web> 部分下的 Web.config 文件中启用了 Web 服务协议 Httpget 和 Httppost

    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
    

    然后从 Webservice 创建下载链接,并使用如下 URL 向其传递参数:

    <a href="WS/Drivers.asmx/GetDownload?brandName=brand&modelName=model&osName=os&file=file" >download file</a>
    

    因此不要更改“GetDownload”网络方法中的任何代码。

    我的客户端单击下载文件,“GetDownload”方法连接到 FTP 服务器并检查凭据并取回指定的文件流。在该浏览器获取文件并优雅地打开下载对话框之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多