为文件创建下载链接时出错

本文关键字:出错 链接 下载 文件创建 | 更新日期: 2023-09-27 18:35:27

我正在创建一个函数,该函数显示特定文件夹中的文件列表并使用户能够下载,但我遇到以下错误:

"System.Web 中发生类型为'System.ArgumentNullException' 的异常.dll但未在用户代码中处理,{"值不能为空。''r'参数名称: 文件名"}"

在声明中:

context.Response.WriteFile(context.Request.QueryString["files"]);

我的代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string[] files = Directory.GetFiles(@"C:'temp");
            rpt.DataSource = files;
            rpt.DataBind();
        }
    }
        protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
                {
                string file = e.Item.DataItem as string;
                HyperLink hyp = e.Item.FindControl("hyp") as HyperLink;
                hyp.Text = file;
                hyp.NavigateUrl = string.Format("~/Handlers/FileHandler.ashx?file={0}'n" , file);
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.ContentType = "application/octet-stream";
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + context.Request.QueryString["files"]);
            context.Response.WriteFile(context.Request.QueryString["files"]);
            context.Response.End();
        }
}

为文件创建下载链接时出错

改为尝试Request.QueryString(files)

可能是拼写错误,但您在 ItemDataBound 中的代码是

 hyp.NavigateUrl = string.Format("~/Handlers/FileHandler.ashx?file={0}'n" , file);

在这里,您正在设置查询字符串参数"file"

在您的处理程序中,您正在访问"文件"参数的 ProcessRequest 方法

 context.Response.WriteFile(context.Request.QueryString["files"]);

尝试将其更改为

 context.Response.WriteFile(context.Request.Params["file"]);