#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. Я пытаюсь использовать ваш код. Как мне интегрировать это в свой код? Извините, но я действительно начинающий самообучающийся.