У меня есть веб-страница со ссылками на некоторые PDF-файлы, например. http://www.someurl.com/somefolder/filename.pdf.Заставить гиперссылку открывать в новом окне, используя context.Response
Когда пользователь нажимает на эти ссылки, аутентификация начинается, пользователь регистрируется и файл может быть загружен. Я пытаюсь добиться того, что загрузки будут открываться в новом окне.
У меня есть ограниченный доступ/контроль над кодом и не могу поместить атрибут target=_blank
в href или добавить javascript. Код, который загружает после аутентификации, как показано ниже:
string filename = Path.GetFileName(context.Request.PhysicalPath);
FileStream MyFileStream;
long FileSize;
string strMapPath = context.Server.MapPath(filename);
MyFileStream = new FileStream(strMapPath, FileMode.Open);
FileSize = MyFileStream.Length;
//Allocate size for our buffer array
byte[] Buffer = new byte[(int)FileSize];
MyFileStream.Read(Buffer, 0, (int)FileSize);
MyFileStream.Close();
//Do buffer cleanup
context.Response.Buffer = true;
context.Response.Clear();
//Add the appropriate headers
context.Response.AddHeader("content-disposition",
"attachement filename=" + filename);
//Add the right contenttype
context.Response.ContentType = "application/pdf";
//Stream it out via a Binary Write
context.Response.BinaryWrite(Buffer);
Можем ли мы заставить context.Response
открыть в новом окне?
Почему не Response.WriteFile? –
Почему вы не можете использовать target = _blank. Можете ли вы объяснить мне причину. Я думаю, использование HTTP-обработчика решит вашу цель. – suryakiran
не могли бы вы привести пример, как Response.WriteFile откроет ссылку в новом окне? спасибо – rumi