Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть пятая   В заключительной части материала речь идёт о сохранении разобранного запроса в документ базы Notes и об изменениях, сделанных для этого сохранения в классе Memo
Шаблоны и примеры Читать статью
 
Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть четвёртая   В предлагаемой вниманию читателя части описания идёт речь об обработке полученной информации запроса после разбора multipart-data
Шаблоны и примеры Читать статью
 
Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть третья   Продолжение материала, посвящённого сервлету Domino, выполняющего обработку post-запроса с данными типа multipart/form-data. В настоящей части продолжается описание разбора запроса к сервлету
Шаблоны и примеры Читать статью
 


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

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

Задача 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
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU