Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 
Задача Domino HTTP. Агент Скачать файлы одним архивом и обработка отдаваемых пользователю файлов. Часть вторая   Завершаем описание решения задачи по генерации файлов web-агентом и выдаче файлов, задействуя сервлет, также представляемый в настоящей статье
Шаблоны и примеры Читать статью
 


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

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

Задача 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