Member 9331278 Ответов: 2

Как открыть файл. pdf в новом окне?


I have the following code

string path = Server.MapPath("\\Reports\\" + DDEP.SelectedValue + ".pdf");

ClientScript.RegisterStartupScript(this.GetType(), "open", "window.open('"+path+"','_blank' );", true);
 
I am trying to open the .pdf in a new window 

but its opening a blank window.

thanks for the help


Что я уже пробовал:

string path = Server.MapPath("\\Reports\\" + DDEP.SelectedValue + ".pdf");

ClientScript.RegisterStartupScript(this.GetType(), "open", "window.open('"+path+"','_blank' );", true);


/*  
            StringBuilder sb = new StringBuilder();
            sb.Append("<script type = 'text/javascript'>");
            sb.Append("window.open('");
            sb.Append(Server.MapPath("\\Reports\\" + DDEP.SelectedValue + ".pdf"));
            sb.Append("');");
            sb.Append("</script>");
            ClientScript.RegisterStartupScript(this.GetType(),
                    "script", sb.ToString());
           */

2 Ответов

Рейтинг:
6

Richard Deeming

Server.MapPath возвращает локальный путь к файлу на сервере.

Пользователь не имеет доступа к локальной файловой системе сервера. Он имеет доступ только к путям, определенным на вашем сайте.

Путь, по которому вы идете window.open может быть одно из следующих:

  • Путь относительно текущей страницы: ../reports/file.pdf
  • Путь относительно текущего сайта: /reports/file.pdf
  • Полный URL-адрес: https://www.yoursite.com/reports/file.pdf


Предположим, что файл хранится в виртуальном каталоге с именем Reports в корне вашего приложения, и что пользователь имеет доступ для чтения файла из этого каталога:
string path = ResolveClientUrl("~/Reports/" + DDEP.SelectedValue + ".pdf");
string encodedPath = System.Web.HttpUtility.JavaScriptStringEncode(path, true);

ClientScript.RegisterStartupScript(this.GetType(), "open", "window.open(" + encodedPath + ", '_blank');", true);

NB: Вам нужно позвонить JavaScriptStringEncode чтобы убедиться, что все специальные символы правильно закодированы. Путем передачи true в качестве второго параметра вы можете убедиться, что строка правильно заключена в кавычки, поэтому вам не нужно включать ' персонажи вокруг него.


Рейтинг:
16

Graeme_Grant

Я задал богам Google ваш вопрос: javascript открыть pdf в новом окне[^] и получил тысячи полезных ответов...

Вот первый из приведенных: javascript-открыть PDF в новом полном окне браузера - переполнение стека[^]

<a href="#" onclick="window.open('MyPDF.pdf', '_blank', 'fullscreen=yes'); return false;">MyPDF</a>

Что, если сделать по-вашему, было бы что-то вроде:
ClientScript.RegisterStartupScript(this.GetType(), "open", "window.open('"+path+"','_blank', 'fullscreen=yes');", true);

Не бойтесь богов Google, они очень добры и щедры...