为文件创建下载链接时出错
本文关键字:出错 链接 下载 文件创建 | 更新日期: 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"]);