【发布时间】:2010-10-29 10:05:27
【问题描述】:
我正在开发我的 asp.net 网站中的一项功能,该功能使用户能够以 zip 文件的形式下载一些文件。我正在使用 DotNetZip 库来生成 zip 文件。
我的代码如下所示:
protected void OkbtnZipExport_OnClickEvent(object sender, EventArgs e)
{
var selectedDocumentIds = GetSelectedDocIds();
string archiveName = String.Format("archive-{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
AddResponseDataForZipFile(Response, archiveName);
try
{
string errorMessage = Utils.ExportToZip(selectedDocumentIds, arkivdelSearchControl.GetbraArkivConnection(), Response.OutputStream);
if (!string.IsNullOrEmpty(errorMessage))
{
LiteralExportStatus.Text = errorMessage;
}
else
LiteralExportStatus.Text = "Success";
}
catch (Exception ex)
{
LiteralExportStatus.Text = "Failure " + ex.Message;
}
Response.Flush();
Response.Close();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
private void AddResponseDataForZipFile(HttpResponse response, string zipName)
{
Response.Clear();
Response.BufferOutput = false;
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
Response.AddHeader("Expires", "0");
Response.AddHeader("Content-Description", "Zip Arcive");
}
现在,如果出现任何问题,比如 Utils.ExportToZip 方法失败,我想向用户显示一条错误消息,而不是下载对话框。我是否必须从 Response 对象中删除一些数据才能取消下载操作?
最好的问候
OKB
【问题讨论】:
标签: asp.net httpresponse dotnetzip