首页 > 后端开发 > C++ > 如何从 ASP.NET 中的 URL 下载或流式传输文件?

如何从 ASP.NET 中的 URL 下载或流式传输文件?

Barbara Streisand
发布: 2025-01-06 08:17:41
原创
532 人浏览过

How to Download or Stream Files from URLs in ASP.NET?

从 ASP.NET 中的 URL 下载或流式传输文件

您可能会遇到需要从 ASP.NET 中的 URL 下载或流式传输文件的情况ASP.NET 应用程序。然而,当这些文件驻留在虚拟映射目录中时,就会出现挑战,从而无法使用 Server.MapPath 确定它们的实际位置。

对此的一种解决方案是使用 HttpWebRequest 类来检索文件并流式传输返回给客户端。这允许您通过 URL 而不是文件路径访问文件。

考虑以下代码片段:

try
{
  // Create a WebRequest to retrieve the file
  HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);

  // Get a response for the request
  HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
  if (fileReq.ContentLength > 0)
    fileResp.ContentLength = fileReq.ContentLength;

  // Get the response stream
  Stream stream = fileResp.GetResponseStream();

  // Prepare the response to the client
  HttpContext.Current.Response.ContentType = MediaTypeNames.Application.Octet;
  HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
  HttpContext.Current.Response.AddHeader("Content-Length", fileResp.ContentLength.ToString());

  int length;
  byte[] buffer = new byte[10000]; // Chunk size for reading the file
  do
  {
    // Check if the client is connected
    if (HttpContext.Current.Response.IsClientConnected)
    {
      // Read data into the buffer
      length = stream.Read(buffer, 0, buffer.Length);

      // Write it out to the response's output stream
      HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);

      // Flush the data
      HttpContext.Current.Response.Flush();

      // Clear the buffer
      buffer = new byte[buffer.Length];
    }
    else
    {
      // Cancel the download if the client has disconnected
      length = -1;
    }
  } while (length > 0);
}
catch
{
  // Handle any errors that may occur
}
finally
{
  if (stream != null)
  {
    // Close the input stream
    stream.Close();
  }
}
登录后复制

通过实现此方法,您可以从 URL 流式传输文件并直接在中显示它们浏览器或允许用户将它们保存到本地系统。

以上是如何从 ASP.NET 中的 URL 下载或流式传输文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板