在 asp.net MVC 中,我可以执行以下操作,这将打开一个流:
Stream strm1 = GenerateReport(Id);
return File(strm1,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Report_" + reportId.ToString() + ".xlsx");
注意我是如何传递 strm1 的,它是一个流。然后我可以将它命名为 Report_+ ...xlsx,如上例所示。
是否有类似的方法可以使用 c# 对 asp.net web 表单执行此操作。
最佳答案
您可以使用 TransmitFile或 WriteFile如果文件在您的网站文件夹中。
string fileName = string.Format("Report_{0}.xlsx", reportId);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition",
string.Format("attachment; filename={0}", fileName));
Response.TransmitFile(fileName);
Response.End();
溪流
如果您的数据已经在内存中,您需要这个方法以块的形式写入响应。
Stream stm1 = GenerateReport(Id);
Int16 bufferSize = 1024;
byte[] buffer = new byte[bufferSize + 1];
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition",
string.Format("attachment; filename=\"Report_{0}.xlsx\";", reportId));
Response.BufferOutput = false;
int count = stm1.Read(buffer, 0, bufferSize);
while (count > 0)
{
Response.OutputStream.Write(buffer, 0, count);
count = stm1.Read(buffer, 0, bufferSize);
}
关于asp.net - 使用 asp.net web 表单中的流返回可下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974374/