Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Java: внутри файла MS Excel 2007. Часть четвёртая   В публикуемой сегодня части статьи заканчивается описание процедур загрузки электронной таблицы и начинается описание самого интересного - каким образом получить данные, хранящиеся в ячейках таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть третья   В предлагаемой вниманию читателя третьей части статьи о структуре файла электронной таблицы Microsoft Excel формата 2007 речь идёт о коде Java, "разархивирующем" файловый поток и формирующем объекты, с которыми предстоит взаимодействовать при дальнейшей обработке данных электронной таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть вторая   В настоящем материале автор постарается систематизировать свои знания о том, как устроено хранение данных электронной таблицы, и презентовать небольшую Java-библиотеку, предоставляющую возможность чтения данных и заполнения файла электронной таблицы Microsoft Excel
Шаблоны и примеры Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть третья

Николай Норкин

г. Киров

notesnet@notesnet.ru

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть первая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Класс ru.medkirov.servlets.uploadprocess.Item

Конструктор класса

public class Item {

protected String header = "";

protected java.io.OutputStream body;

Item(String header, java.io.OutputStream body) {

this.header = header;

this.body = body;

}

Из заголовка вытаскивается имя поля (айтема), название и тип файла

public String getName() {

try {

String[] headers = this.header.split("\r\n");

for (int i = 0; i < headers.length; i++) {

if(headers[i].startsWith("Content-Disposition: "))

return this.decode(this.getName(headers[i]));

}

}

catch (Exception e) {}

return "";

}

public String getFilename() {

try {

String[] headers = this.header.split("\r\n");

for (int i = 0; i < headers.length; i++) {

if(headers[i].startsWith("Content-Disposition: ")) {

return this.decode(this.getFilename(headers[i]));

}

}

}

catch (Exception e) {}

return "";

}

public String getContentType() {

try {

String[] headers = this.header.split("\r\n");

for (int i = 0; i < headers.length; i++) {

if(headers[i].startsWith("Content-Type: ")) {

String[] parts = headers[i].split(":");

return parts[1].trim();

}

}

}

catch (Exception e) {}

return "";

}

public String getKey() {

String name = this.getName();

String filename = this.getFilename();

if (filename.equals("")) return name;

return name.concat("=").concat(filename);

}

public boolean isAttachment() {

return !this.getFilename().equals("");

}

Из потока контента - значение поля или длина и содержимое файла

public long length() {

if (!isAttachment()) return 0;

try {

byte[] bytes = ((java.io.ByteArrayOutputStream)this.getContent()).toByteArray();

return bytes.length;

}

catch (Exception e) {}

return 0;

}

public java.io.OutputStream getContent() {

return this.body;

}

public String getBase64Content() {

try {

byte[] bytes = ((java.io.ByteArrayOutputStream)this.getContent()).toByteArray();

org.apache.commons.codec.binary.Base64 codec = new org.apache.commons.codec.binary.Base64();

byte[] encoded = codec.encode(bytes);

return new String(encoded);

}

catch (Exception e) {}

return "";

}

public String getItemValueString() {

try {

return this.decode(new String(((java.io.ByteArrayOutputStream)this.body).toByteArray(), "UTF-8"));

}

catch (Exception e) {}

return "";

}

public String decode(String original) {

try {

String result = original.replaceAll("%u", "\\\\u");

result = java.net.URLDecoder.decode(result, "UTF-8");

result = org.apache.commons.lang3.StringEscapeUtils.unescapeJava(result);

return result;

}

catch (Exception e) {}

return original;

}

}

Дальнейшая обработка post-запроса

После обработки потока запроса следует получить настроечный профиль по ключу, переданному параметром запроса, и выполнить в соответствии с настройками

  • проверку, что запрос не анонимный
  • проверку наличия обязательных полей
  • проверку автоматической отправки формы
  • антивирусную проверку
  • создать и сохранить документ в базе

Этим этапам обработки и будет посвящена следующая часть материала

Ссылки

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть первая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть четвёртая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть пятая

Код сервлета
 
  Опубликовано — 02/14/2021 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Lotus notes и ЭЦП
29.09.2017 17:16:14
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
 
© LOGOSPHERE.RU