Я передаю данные с сервера на клиент для загрузки с использованием filestream.write
. В этом случае происходит то, что я могу загрузить файл, но он не отображается как загрузка в моем браузере. Ни всплывающее окно для «Сохранить как» не появляется, а «Панель загрузки» появляется в разделе «Загрузки». От взгляда вокруг, я думаю, мне нужно включить «что-то» в заголовок ответа, чтобы сообщить браузеру, что есть вложение с этим ответом. Также я хочу установить cookie. Для достижения этой цели, это то, что я делаю:Добавление заголовка в ответ HTTP в действии внутри контроллера в asp.net/mvc
[HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" & name)]
public ActionResult Download(string name)
{
// some more code to get data in inputstream.
using (FileStream fs = System.IO.File.OpenWrite(TargetFile))
{
byte[] buffer = new byte[SegmentSize];
int bytesRead;
while ((bytesRead = inputStream.Read(buffer, 0, SegmentSize)) > 0)
{
fs.WriteAsync(buffer, 0, bytesRead);
}
}
}
return RedirectToAction("Index");
}
Я получаю сообщение об ошибке, что: «System.web.httpcontext.current это свойство и используется в качестве типа.»
Я делаю обновление заголовка в нужном месте? Есть ли другой способ сделать это?
Я пытался сделать это.Но он пока не показывает диалоговое окно «Сохранить как», а также индикатор выполнения загрузки в разделе загрузки браузера. – ezile
Это работает для меня, и я вижу, как html-образ просматривается в моем тестовом примере. Для вас это может быть потому, что вы перенаправляетесь к действию. Однако я не пробовал этот сценарий. Просто попробуйте разместить этот заголовок под индексом только для попытки. – PSL
Я расскажу немного больше. Я на странице «Индекс», а затем нажимает «Загрузить», а затем вызывает действие «Загрузить» через JavaScript. Вышеприведенный код написан в действии Download. И после потоковой передачи файла пользователю, я перенаправляю на страницу индекса. Я смущен, когда я должен сказать браузеру, что есть загрузка. Я имею в виду, что я отправляю материал с помощью FileStream.WriteSync, поэтому, я думаю, мне нужно сообщить браузеру перед отправкой файла, что есть вложение, и, таким образом, появится всплывающее диалоговое окно «Сохранить как». Я думаю, что я запутался в рабочем процессе здесь и, следовательно, не делаю, когда и где я должен делать изменения. – ezile