在 dotnet core 2.0 和 angular 2+ 中访问当前用户的下载文件夹

Accessing current users's download folder in dotnet core 2.0 and angular 2+

我是一名新开发人员,目前正在学习 dotnet 核心 angular 技术。 我有一个 dotnet 核心项目,允许我使用 EPPlus.Core 库将 SQL table 下载为 excel 文件。当我测试下面的代码时,它工作正常。我可以从我的下载文件夹中获取 excel 文件。但是,当我将它发布到 IIS 时,代码工作正常但 Downloads 文件夹中没有文件。

当我调试它时,我意识到前端(在我的例子中,它是 angular)无法访问我的下载文件夹,即使我在我的控制器中明确声明也是如此。这是我的控制器代码,它允许我导出为 excel 文件。

[HttpGet]
[Route("ExportParticipants")]
public string ExportParticipants()
{
    string rootFolder =  System.Convert.ToString(
            Microsoft.Win32.Registry.GetValue(
            @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
                ,"{374DE290-123F-4565-9164-39C4925E467B}"
                ,String.Empty));
    var list = DateTime.Now.ToString("yyyy-MM-dd-HH-mmss");
    string fileName = @"Export_Participants_" + list + "_.xlsx";

    FileInfo file = new FileInfo(Path.Combine(rootFolder, fileName));

    using (ExcelPackage package = new ExcelPackage(file))
    {
        IList<Participant> participantList = context.Participants.ToList();
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Participants");
        int totalRows = participantList.Count();

        worksheet.Cells[1, 1].Value = "#";
        worksheet.Cells[1, 2].Value = "FirstName";
        worksheet.Cells[1, 3].Value = "Last Name";
        int i = 0;
        for (int row = 2; row <= totalRows + 1; row++)
        {
            worksheet.Cells[row, 1].Value = i+1;
            worksheet.Cells[row, 2].Value = participantList[i].FirstName;
            worksheet.Cells[row, 3].Value = participantList[i].LastName;
            i++;
        }

        package.Save();

    }

    return " Participant list has been exported successfully";
}

上面的代码在我用邮递员测试时工作正常。但是,当我发布它时,它不起作用。我没有收到任何错误。但我发现问题是rootFolder。所以我尝试了以下代码:

string rootFolder = Environment.GetEnvironmentVariable("USERPROFILE") + @"\" + "Downloads";

我什至尝试了 Ray Koopa's article in Code Project 但我在下载文件夹中什么也没有。

如何将这个导出的 excel 文件放到当前用户的下载文件夹中?请注意,我使用 windows。

或者我应该在前端执行此操作?我应该寻找一个 npm 包并在前端使用它吗?如果有,你推荐给我哪个套餐?

谢谢大家的帮助!

这将下载服务器下载文件夹中的 excel 文件。我将不使用 MemoryStream,而是使用前端库。由于我有 JASON 数组形式的参与者列表,DataTables 库是一个很好的选择。它不仅可以导出 excel,我们还可以导出 pdf、打印预览以及复制到剪贴板。我不为他们工作。我与他们没有任何关系。但我发现它对我来说非常有用。