从webservice下载文件 - 在ASP.NET站点中

use*_*757 10 c# asp.net web-services file download

我想使用webservice从一个网站将文件推送到浏览器.我目前正在将文件读入base64字节数组,并从webservice返回.这个web服务是从一个网站调用的,我一直坚持如何将其作为原始文件推送到浏览器.理想情况下,我想将字节数组读入内存流,然后在可能的情况下将其写入Response流,以便最终用户只下载文件.

Ran*_*pho 13

首先,让您的Web服务只返回文件的字节数组,而不是发送base64字节数组.Response.OutputStream.Write()将自动base64编码你的字节,所以你也可以在你的内存流中解码它们.

其次,您需要的不仅仅是字节数.您将需要与该文件关联的元数据.对于下面的代码段,我将所有元数据放入一个单独的类(名为"file"的本地实例)中.然后,只要您拥有所需的数据,就可以使用此代码段:

Response.Clear();
Response.ClearHeaders();
Response.ContentType = file.ContentType;
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.FileName + "\"");
Response.AddHeader("Content-Length", file.FileSize.ToString());
Response.OutputStream.Write(file.Bytes, 0, file.Bytes.Length);
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)

  • 小心Response.End()http://stackoverflow.com/questions/1087777/is-response-end-considered-harmful (3认同)
  • 我应该使用Response.Close()而不是Repsonse.End()吗? (2认同)