Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла пользователю из сервлета и ужасная пропускная способность / 3 сообщений из 3, страница 1 из 1
06.12.2006, 07:00:44
    #34179191
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла пользователю из сервлета и ужасная пропускная способность
Здравствуйте! Отправка пользователю необходимого файла осуществляется след функцией:

Код: 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.
   synchronized   public   void  sendFile2user(HttpServletResponse response, String fullfileName) throws  ServletException, IOException
  {
      //Выделяем из полного пути файла его имя
      String shortname=fullfileName.substring(fullfileName.lastIndexOf("/")+ 1 , fullfileName.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(fullfileName));
        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){
        ioe.printStackTrace();
      }
  }

Вот если канал хороший - то пользователи примиют файл на УРА!
Но если канал узкий и работает с перебоями - то тут ТРУБА. Файл не закачивается нормально и всё. Кто сталкивался и кто как решал такую проблему ?
...
Рейтинг: 0 / 0
06.12.2006, 12:39:25
    #34180106
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла пользователю из сервлета и ужасная пропускная способность
Труба это на самом деле вышепреведенный код. По идее маппинг расширения на MIME тип надо прописывать в web.xml. В случае Томката например, там уже и так куча прописана. Смотри Tomcat_5.5\conf\web.xml.

Вторая проблема это конечно же отсутствие дозакачки.
Можно самому писать реализацию.
Можно заюзать класс из томката. Кажется это org\apache\catalina\servlets\DefaultServlet.java
А можно вообще нужные файлы выкладывать временно на http сервер, который предоставляет наиболее быструю закачку и возможность дозакачки.
...
Рейтинг: 0 / 0
11.12.2006, 06:50:52
    #34188953
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка файла пользователю из сервлета и ужасная пропускная способность
Спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка файла пользователю из сервлета и ужасная пропускная способность / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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