使用 HttpHandler 下载 .zip 目录
Dowloading a .zip directory with HttpHandler
我目前在使用 HttpHandler
时遇到了问题(第一次使用)。基本上我正在动态生成一个 .zip 文件夹以供下载。我正在将一个 ID(使用 Guid 生成)传递给我的处理程序以检查该文件夹是否存在并下载它或引发异常。
据我所知,使用处理程序应该可以完成这项工作,但我无法解决这个问题。下面是我到目前为止编写的代码,首先是对处理程序的调用,然后是处理程序本身
<a href="MyHandler.ashx?requestID=@requestID" target="_blank">
<%@ WebHandler Language="C#" Class="MyHandler" %>
using System;
using System.Web;
using System.IO;
using System.Web.Hosting;
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var id = context.Request.QueryString["requestID"];
var dirPath = new DirectoryInfo(Path.Combine(HostingEnvironment.MapPath("~/App_Data/") + id + ".zip"));
if (dirPath.Exists)
{
context.Response.ContentType = "application/octet-stream";
context.Response.AppendHeader(HostingEnvironment.MapPath("~/App_Data/"), "attachment;filename=" + id+".zip");
}
else
throw (new HttpException("404"));
}
public bool IsReusable
{
get { return false; }
}
}
我只需要下载这个.zip 目录。打开动态生成的错误时出现 404 错误,但目录已正确创建和压缩。我是不是用错方法了?
您可以只将 WebClient 用于 2 行:
using(Webclient wc = new WebClient())
{
wc.DownloadFile(url, @"D:\downloads.zip");
}
我目前在使用 HttpHandler
时遇到了问题(第一次使用)。基本上我正在动态生成一个 .zip 文件夹以供下载。我正在将一个 ID(使用 Guid 生成)传递给我的处理程序以检查该文件夹是否存在并下载它或引发异常。
据我所知,使用处理程序应该可以完成这项工作,但我无法解决这个问题。下面是我到目前为止编写的代码,首先是对处理程序的调用,然后是处理程序本身
<a href="MyHandler.ashx?requestID=@requestID" target="_blank">
<%@ WebHandler Language="C#" Class="MyHandler" %>
using System;
using System.Web;
using System.IO;
using System.Web.Hosting;
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var id = context.Request.QueryString["requestID"];
var dirPath = new DirectoryInfo(Path.Combine(HostingEnvironment.MapPath("~/App_Data/") + id + ".zip"));
if (dirPath.Exists)
{
context.Response.ContentType = "application/octet-stream";
context.Response.AppendHeader(HostingEnvironment.MapPath("~/App_Data/"), "attachment;filename=" + id+".zip");
}
else
throw (new HttpException("404"));
}
public bool IsReusable
{
get { return false; }
}
}
我只需要下载这个.zip 目录。打开动态生成的错误时出现 404 错误,但目录已正确创建和压缩。我是不是用错方法了?
您可以只将 WebClient 用于 2 行:
using(Webclient wc = new WebClient())
{
wc.DownloadFile(url, @"D:\downloads.zip");
}