2012-02-10 5 views
0

В моем текущем проекте мне нужно открыть файл PDF, который был загружен пользователем. У меня есть элемент управления загрузкой файлов и кнопка «Загрузить» на моей странице aspx. Как только пользователь нажмет кнопку «Загрузить», файл должен быть сохранен и открыт в новом окне.Открыть загруженный файл PDF в новом окне браузера/вкладке

Я попытался сделать это с помощью стороны клиента функции:

 <script type="text/javascript"> 
      function openPDF() { 
      alert('The file is open.'); 
      window.open('Open PDF.aspx','PDF'); 
      return true; 
      } 
     </script> 

Но страница "Open PDF.aspx" пустая.

Открыть PDF.aspx.cs файл выглядит следующим образом:

 protected void Page_Load(object sender, EventArgs e) 
     { 
      string fullFileName = Session["fullFileName"].ToString(); 
      WebClient client = new WebClient(); 
      Byte[] buffer = client.DownloadData(fullFileName); 

      if (buffer != null) 
      { 
        Response.ContentType = "application/pdf"; 
        Response.AddHeader("content-length", buffer.Length.ToString()); 
        Response.BinaryWrite(buffer); 
      } 
     } 

Полный путь к файлу вместе с именем файла строится в случае BtnUpload_Click которое событие на стороне сервера, и выполняется после Client- боковая функция. Как передать полный путь к файлу в качестве сеанса или запроса на страницу «Открыть PDF.aspx»?

Если есть какой-либо другой способ достижения этого, то, пожалуйста, бросьте свою идею. Благодаря!!!

ответ

0

Вы можете сделать следующее:

  • Сохранить загруженный файл где-то на сервере через АЯКС после вызова
  • После Ajax вызова закончен, он может вернуться URL, который показывает файл только закачанный
  • Затем используйте окно. open (url) (например, pdf.aspx? id = [some_id_or_name])

В вашем pdf.aspx вы должны загружать файл локально и обычно передавать его клиенту с соответствующими заголовками.

+0

Спасибо за ваш ответ. Но я никогда не работал с Ajax. Можете ли вы привести мне пример? – KhD

+0

Вы используете (или планируете использовать) jQuery или любую другую библиотеку javascript или просто чистый javascript? –

+0

просто чистый javascript. – KhD

0

evet, если вы передадите имя файла в «Open PDF.aspx», это не сработает, , потому что ваша операция загрузки будет выполняться после открытия «Open PDF.aspx».

Вы можете сохранить файл на сервер на BtnUpload_Click evet, а затем зарегистрировать клиентский скрипт, чтобы открыть сохраненный файл.