Главная Библиотека Шаблоны и примерыЗадача 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 |
| |
|
|