【发布时间】:2015-07-08 11:48:34
【问题描述】:
谁知道怎么做?我有一个循环,在那个循环中建立了一个列表。我希望每个列表都保存为具有不同文件名的不同文件(duh)。我为此使用 HttpContext.Current.Response 。单个文件工作正常,但是,我不能循环它。我在第二次迭代时收到的错误是“发送 HTTP 标头后服务器无法清除标头”。我的代码有点像下面。当然重要的是 // 对用户的响应所评论的部分。任何cmets都非常感谢!
欢呼, 罗纳德
foreach (GridViewRow dr in GridView1.Rows)
{
// find the check box in the row
System.Web.UI.WebControls.CheckBox cb = (System.Web.UI.WebControls.CheckBox)dr.FindControl("chkbx_selected");
// see if it's checked
if (cb != null && cb.Checked)
{
// get the cell
DataControlFieldCell Cell = GetCellByName(dr, "GUID");
string guid = new Guid(Cell.Text);
// get the record filtered on the GUID
var result_json = call_WEBAPI(guid);
// result_json contains serialized List<string>
List<string> result = JsonConvert.DeserializeObject<List<string>>(result_json);
// response to user
string filename = result[0] + ".txt";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AppendHeader("content-disposition", string.Format("attachment; filename={0}", filename));
HttpContext.Current.Response.ContentType = "application/octet-stream";
foreach (string line in result)
{
HttpContext.Current.Response.Write(line + Environment.NewLine);
}
HttpContext.Current.Response.Flush();
}
}
HttpContext.Current.Response.End();
更新:我现在在内存中创建一个 zip 存档,创建一个条目并用一个 writer 填充它。但是如何在 .zip 中创建第二个条目?下面的代码不起作用,错误是“创建模式下的条目只能写入一次,一次只能打开一个条目。”
using (MemoryStream zipToOpen = new MemoryStream())
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create, true))
{
ZipArchiveEntry readmeEntry = archive.CreateEntry("Readme.txt");
using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
{
writer.WriteLine("Information about this package.");
writer.WriteLine("========================");
}
List<string> result = new List<string>();
result.Add("line1");
result.Add("line2");
ZipArchiveEntry readmeEntry2 = archive.CreateEntry("Readme2.txt");
using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
{
writer.Write(result);
}
}
using (var fileStream = new FileStream(@"C:\test.zip", FileMode.Create))
{
zipToOpen.Seek(0, SeekOrigin.Begin);
zipToOpen.CopyTo(fileStream);
}
}
【问题讨论】:
-
如果您愿意,可以按照 jquery stackoverflow.com/questions/9047645/… 的演练进行操作
-
我对jquery一无所知。通常我只在 API 后端工作,但我需要一个简单的 GUI。但是我可以尝试使用该帖子,谢谢。
标签: c# asp.net asp.net-mvc-4