我有一个在IIS上运行的ASP.NET Core 2.0 MVC项目。 希望将一些信息从数据网格导出到Excel并将其从网页保存到当前用户的桌面。
string fileName = "SN-export-" + DateTime.Now + ".xlsx";
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
fileName = rgx.Replace(fileName, ".");
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string fileName2 = Path.Combine(path, fileName);
FileInfo excelFile = new FileInfo(fileName2);
excel.SaveAs(excelFile);
这在Visual Studio上是完美的本地环境,但在IIS中发布后则不能。 使用简单路径字符串path = @“ C:\ WINDOWS \ TEMP”;它将将此导出文件保存在服务器的temp文件夹中,而不是当前的网页用户。 如何获得?
答案 0 :(得分:0)
ASP.NET MVC是Web应用程序的框架。因此,您拥有前端和后端部件。此代码将在应用程序的服务器端执行。即使使用Razor页面,它们也会在后端生成。因此,有几种方法可以在计算机上保存数据:
第二种方式,您可以使用下一个代码:
[Route("api/[controller]")]
public class DownloadController : Controller {
//GET api/download/12345abc
[HttpGet("{id}"]
public async Task<IActionResult> Download(YourData data) {
Stream stream = await {{__get_stream_based_on_your_data__}}
if(stream == null)
return NotFound();
return File(stream, "application/octet-stream"); // returns a FileStreamResult
}
}
出于安全原因,您只能将数据保存到下载目录中。