powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача файла клиенту с упаковкой через JSP
1 сообщений из 1, страница 1 из 1
Передача файла клиенту с упаковкой через JSP
    #34043468
Для передачи файла клиенту и скрытия его месторасположения был написан
download.jsp. Вот его код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<%@ page  import ="java.io.*" %>
<%  //Файл donload.jsp
@page  import ="com.pb.analyse.*"%>
<%
  // response.setHeader("Cache-Control", "no-cache");
   if  ( ( (request.getParameter("report")== null ) & (request.getParameter("task")== null ) ) || (session.getAttribute("log") ==  null ) || (session.getAttribute("log").equals(""))) {
      response.sendRedirect("../index.jsp");
  }
%>

<%
  String filename=TaskManager.getInstance().GetTaskReportName(session.getAttribute("log").toString(),request.getParameter("task").toString(),request.getParameter("report").toString());

  //Выделяем из полного пути файла его имя
  String shortname=filename.substring(filename.lastIndexOf("\\")+1, filename.length());
  response.setHeader("Content-Disposition", "attachment; filename=\""+shortname+"\"");
  response.setHeader("Content-Transfer-Encoding","binary;");

  String fileExt=shortname.substring(shortname.lastIndexOf(".")+ 1 ).toString();
  //Выставляем заголовок ответа
  String ContDispType="application/force-download";

   if  (fileExt.toString().equalsIgnoreCase("pdf")) { ContDispType="application/pdf"; }
   if  (fileExt.toString().equalsIgnoreCase("exe")) { ContDispType="application/octet-stream"; }
   if  (fileExt.toString().equalsIgnoreCase("zip")) { ContDispType="application/zip";          }
   if  (fileExt.toString().equalsIgnoreCase("doc")) { ContDispType="application/msword";        }
   if  (fileExt.toString().equalsIgnoreCase("xls")) { ContDispType="application/vnd.ms-excel";   } //   "application/x-xls"
   if  (fileExt.toString().equalsIgnoreCase("ppt")) { ContDispType="application/vnd.ms-powerpoint"; }
   if  (fileExt.toString().equalsIgnoreCase("gif")) { ContDispType="image/gif";   }
   if  (fileExt.toString().equalsIgnoreCase("png")) { ContDispType="image/png";      }
   if  (fileExt.toString().equalsIgnoreCase("jpg")) { ContDispType="image/jpg";       }
   if  (fileExt.toString().equalsIgnoreCase("html")) { ContDispType="text/html";       }
   if  (fileExt.toString().equalsIgnoreCase("htm")) { ContDispType="text/html";          }
   if  (fileExt.toString().equalsIgnoreCase("txt")) { ContDispType="text/plain";          }
   if  (fileExt.toString().equalsIgnoreCase("dbf")) { ContDispType="application/x-dbf";    }

  response.setHeader("Content-Type",ContDispType);

   try 
  {
   BufferedInputStream in= new 
         BufferedInputStream ( new  FileInputStream (filename));
   BufferedOutputStream binout= new 
         BufferedOutputStream(response.getOutputStream());
    int  ch=in.read();
    while (ch!=- 1 )
   {
    binout.write(ch);
    ch=in.read();
   }
   binout.close();
   in.close();
  }
   catch (IOException ioe)
  {
   out.println("Unable to get access");
  }
%>

по кликам на ссылки типа download.jsp?task=1&report=2
все отлично работает - и под MSIE и под Firefox и из под Linux!
Вместо открытия в окне вылазит как и задумано окно Сохранить и в нем
имя нормально.

Но если я перед выводов добавляю:
GZIPOutputStream out1 = new GZIPOutputStream(response.getOutputStream());
BufferedOutputStream binout=new BufferedOutputStream(out1);
и в заголовок добавляю response.setHeader("Content-Encoding", "gzip");,
то вместо нормального имени уже в окне сохранения появляется
download.расширение.

Как сделать все таки упаковку при передаче и чтобы выставленное имя
назначалось файлу ? То есть основная идея была чтобы даже на ссылку на html-файл вызывалось не открытие ее в окно, а окно СОХРАНИТЬ.
Но добавление упаковки испортило функциональность. HELP PLEASE
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача файла клиенту с упаковкой через JSP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]