Сохранить файл на рабочий стол для текущего пользователя - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть проект ASP.NET Core 2.0 MVC, работающий на IIS.Хотите экспортировать некоторую информацию из сетки данных в 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";Он сохранит этот файл экспорта во временной папке сервера, но не у текущего пользователя веб-страницы.Как это получить?

1 Ответ

0 голосов
/ 28 ноября 2018

ASP.NET MVC - это фреймворк для веб-приложения.Итак, у вас есть передние и внутренние части.Этот код будет выполняться на стороне сервера вашего приложения.Даже если вы используете Razor-страницы, они также генерируются на бэкэнде.Таким образом, существует несколько способов сохранения данных на компьютере:

  • использование js для итерации и сохранения данных, но я не уверен, что сохранить в Excel с помощью js легко;
  • отправьте нужные данные в бэкэнд, сохраните их в Excel и затем верните клиенту.

Для второго способа вы можете использовать следующий код:

[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
    }   
}

И из-за безопасностипричины, по которым вы можете сохранять данные только в каталог загрузок.

...