【发布时间】:2014-01-14 18:33:55
【问题描述】:
我正在为我的 UI 和 Ajax 调用 (DirectMethods) 使用 Ext.Net 开发一个 asp.net 应用程序。我正在尝试使用 DotNetZip 在服务器上下载一个 zip 文件。下载过程分为两部分:
第 1 部分:首先调用方法 ExportXML 将内存中的 XML 导出到服务器上文件夹中的物理 XML 文件。
第 2 部分:ExportXML 方法成功调用 DownloadZipFile。该方法使用 DotNetZip 压缩这些 XML 文件,并在 ZipFile 对象上调用 Save 方法来调用浏览器上的下载。
客户端 Ext.Net 代码
Ext.net.DirectMethods.ExportXML(ids, {
success: function (zipID) {
Ext.net.DirectMethods.DownloadZipFile(zipID);
},
eventMask: {
showMask: true,
msg: "Creating XML files... This may take some time..."
}
});
服务器端 DirectMethods
[DirectMethod]
public void DownloadZipFile(string randomFolderName)
{
var zippedXMLFiles = new ZipFile();
var filePath = System.IO.Path.Combine(m_baseExportFolder, randomFolderName);
Response.AddHeader("Content-Disposition", "attachment; filename=massExportXML.zip");
Response.ContentType = "application/zip";
var xmlDir = new DirectoryInfo(filePath);
foreach (var fileInfo in xmlDir.GetFiles())
{
zippedXMLFiles.AddFile(fileInfo.FullName, string.Empty);
}
zippedXMLFiles.Save(Response.OutputStream);
}
[DirectMethod]
public string ExportXML(string[] kCodes)
{
var folderID = System.IO.Path.GetRandomFileName();
var folderPath = System.IO.Path.Combine(m_baseExportFolder, folderID);
System.IO.Directory.CreateDirectory(folderPath);
foreach (var kCode in kCodes)
{
GenerateXML(Convert.ToInt32(kCode), folderPath);
}
return folderID;
}
GenerateXML 是将内存中的 XML 转换为物理 XML 文件的方法。
我的代码成功运行以创建 zip 文件并添加 zip 文件,但是,在我看到的浏览器上
和 HTTP 响应代码为 200(这意味着请求没有问题)。我很困惑为什么这不起作用。
请帮忙!
谢谢, 维比纽比
【问题讨论】:
标签: c# asp.net xml ext.net dotnetzip