ASP.net загрузите и сохраните файл в папке пользователя

#c# #asp.net #savefiledialog

#c# #asp.net #сохранить файловый каталог

Вопрос:

Я пытаюсь сохранить файл на ПК пользователя, но у меня не получается это сделать. Этот метод выдает ошибку, поскольку пытается сохранить файл где-нибудь на C. Я понимаю, что это не соответствует. Я хотел бы сохранить файл в папке загрузки или предложить пользователю диалоговое окно с файлом.

 void SaveReport(Telerik.Reporting.Report report, string fileName)
{
    ReportProcessor reportProcessor = new ReportProcessor();
    Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource();
    instanceReportSource.ReportDocument = report;
    RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
    }
}
  

Как я могу сохранить файл в папке загрузки на компьютере пользователя или запросить файловый каталог, чтобы позволить пользователю выбрать место назначения?

Комментарии:

1. filestream будет записывать данные в файл на сервере, а не на компьютере клиента. Попробуйте записать байты документа в поток вывода ответа и http-заголовок content-disposition в ответ.

Ответ №1:

Вы не можете принудительно указать место, в которое загружается файл.

В вашем коде вы должны записывать не в file, а в OutputStream из ответа.

 RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename="file.pdf"");
HttpContext.Current.Response.OutputStream.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
  

Комментарии:

1. Происходит что-то другое, но файл не загружается. Он отображается в браузере в полном беспорядке.

2. Большое спасибо за поддержку. Я действительно ценю дополнительную помощь. Это работает нормально.

Ответ №2:

Filestream будет записывать данные в файл на сервере, а не на компьютере клиента.

Попробуйте записать байты документа в поток вывода ответа и content-disposition http-заголовок в ответ.

Response.AddHeader("Content-Disposition", "attachment; filename="" fileName """);

Это предложит пользователю загрузить файл в зависимости от настроек браузера.

Вы не можете контролировать, в какой каталог помещается файл на компьютере клиента.

Комментарии:

1. Я пытаюсь использовать ваш код. Как мне интегрировать это в свой код? Извините, но я действительно начинающий самообучающийся.