|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
|
Аттачи: получение бинарника02.02.2012, 12:34. Показов 23565. Ответов 17
Метки нет (Все метки)
Только без выгрузки файла в какую либо директорию и получения банарника через stream.
Есть ли такая возможность?
0
|
|
| 02.02.2012, 12:34 | |
|
Ответы с готовыми решениями:
17
Аттачи: получение из RtItem Аттачи в Web аттачи в письме |
|
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
|
|
| 02.02.2012, 12:44 | |
|
Если не через stream, то как (в каком виде) Вы хотели бы получить файл?
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
||
| 02.02.2012, 12:46 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 02.02.2012, 15:45 | |
|
не понятны "претензии" к стриму
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
||
| 02.02.2012, 16:40 | ||
|
ну вот <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">как то так)</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class=java>public class JavaAgent extends AgentBase {
public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); //Получаем документ Database db = session.getDatabase("server", "DB.NSF"); Agent agent = agentContext.getCurrentAgent(); Document doc = db.getDocumentByID(agent.getParameterDoc ID()); Document doc = db.getDocumentByID("B7DA"); String URL = "<тут путь с логином и паролем>"; //Получаем имена аттачай String ATTACH_NAME = ""; String ATTACH_BIN = ""; Vector items = doc.getItems(); for (int j=0; j<items.size(); j++) { Item item = (Item)items.elementAt(j); switch (item.getType()) { case Item.ATTACHMENT: EmbeddedObject obj = doc.getAttachment(item.getValueString()) ; ATTACH_NAME = ATTACH_NAME + "Attachment: " + obj.getName() + "\n"; ATTACH_BIN = ATTACH_BIN + Как сюда засунуть бинрник аттача???? break; } } //Формируем текст запроса String CONTENT = "content=id: ticket/new"; CONTENT = CONTENT + "\nQueue: " + "server"; CONTENT = CONTENT + "\nSubject: " + "SUBJ"; CONTENT = CONTENT + "\nRequestor: " + "FROM MAIL"; CONTENT = CONTENT + "\nText: " + "TEST"; CONTENT = CONTENT + "\n" + ATTACH_NAME; CONTENT = CONTENT + "\n" + ATTACH_BIN; //Отправляем запрос в RT String REQUEST = doPost(URL, CONTENT); //Парсим ответ сервера ... } catch(Exception e) { e.printStackTrace(); } } public String doPost(String urlString, String query) { String line; URLConnection urlConnection; try { String charset = "UTF-8"; URL url = new URL(urlString); urlConnection = url.openConnection(); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.setUseCaches(false); urlConnection.setRequestProperty("Accept-Charset", charset); urlConnection.setRequestProperty("Conten t-Type", "application/x-www-form-urlencoded;charset=" + charset); OutputStream output = null; output = urlConnection.getOutputStream(); output.write(query.getBytes(charset)); output.close(); StringBuffer response = new StringBuffer(); BufferedReader input = new BufferedReader(new InputStreamReader(urlConnection.getInput Stream())); while ((line = input.readLine()) != null) { response.append(line + "\n");} input.close(); return response.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } }[/CODE] Добавлено:
может на Java не так, не силен)
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
||
| 02.02.2012, 20:31 | ||
берём ДХЛ - гоним его в SAX, дергаем тег filedata, декодим его через base64 - вот они бинарные данные
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 02.02.2012, 20:46 | |
|
в джаве аналогично, но там с нотусёвым стримом засада - он какбэ нахненужен, но без него никак не экспортнуть (тока в стринг)
потому мона сразу в стринг и дёрнуть filedata дергалки файлов я постил "на интертрасте" http://web2.inttrust.ru/site/itforum.nsf/4...#33;OpenDocumen там есть дергалки через ДОМ - но это накладные расходы по памяти, кот. жвм выделено мало, в нотусне, и ежели не поменять нотес.ини - память могет скончаться а для ДОМ и ЛС http://web2.inttrust.ru/site/itforum.nsf/a...2A?OpenDocument тока тег другой взять, но в base64 - будет е..ля под ЛС (если данных много) тамже есть конвертация base64 (для ЛС) http://web2.inttrust.ru/site/itforum.nsf/a...0A?OpenDocument в джаве оно штатно
0
|
|
|
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
|
|
| 03.02.2012, 02:04 | |
|
А если читать с помощью Java (там же ж есть Stream в Java Classes), брать string из filedata и использовать "родной" явовский кодировщик в base64? Не понятно, зачем тут LS?
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
||||
| 03.02.2012, 13:46 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
|
|
| 03.02.2012, 15:16 | |
|
еще круче
1. гоним в стим 2. вырезаем всё кроме аттача 3. импортим стим в базу в виде простого документа с ататчем 4. урл на атач буде типа http://base.nsf/filename/$FILE/filename
0
|
|
|
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
|
||
| 03.02.2012, 15:26 | ||
бинарник - это byte[]. Преобразование его в строку возможно кучей способов. Не существует единственного правильного (стандартного, общепринятого - как угодно ) способа преобразовать массив байт в строку. Поэтому вам для начала надо определиться со способом кодировки... Судя по всему - вы собираетесь гнать его в x-www-form-urlencoded, что не совсем разумно. http://www.ietf.org/rfc/rfc1867.txt: The encoding type application/x-www-form-urlencoded is inefficient for sending large quantities of binary data or text containing non-ASCII characters. Thus, a new media type, multipart/form-data, is proposed as a way of efficiently sending the values associated with a filled-out form from client to server. По сути вопроса: Для получения содержимого файла проще всего воспользоваться EmbeddedObject.getInputStream(). Строку из файла делать не надо - это мучительная и затратная по памяти операция, тем более что в итоге вы будете его писать его в OutputStream. Читайте данные из EmbeddedObject.getInputStream(), конвертируйте в нужный формат ( url-encoded в вашем случае ) и пишите в сonnection.getOutputStream(). В результате - затраты по памяти будут околонулевые. P.S. eo.getInputStream() требует доступа на запись в ФС, т.к. физически происходит выгрузка аттача в темповую папку. Аттач автоматически убивается при выполнении eo.recycle(). Подробности - в хелпе. Если есть серьезные причины избежать записи на диск - можно потанцевать вокруг dxl или посмотреть на Document.ConvertToMIME ( since 8.5.1 )
0
|
||
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
||
| 06.02.2012, 10:03 | ||
|
turumbay
По поводу "x-www-form-urlencoded", не моя хотелка, нужно аттач передать в другую систему, как понимаю другого не ест.
<!--shcode--><pre><code class=java>Vector items = doc.getItems(); for (int j = 0; j < items.size(); j++) { Item item = (Item)items.elementAt(j); switch (item.getType()) { case Item.ATTACHMENT: EmbeddedObject obj = doc.getAttachment(item.getValueString()) ; obj.getInputStream() // что дальше с этим делать? break; } } // Отправляем запрос OutputStream output = null; output = urlConnection.getOutputStream(); output.write(query.getBytes(charset)); output.close();[/CODE]
0
|
||
|
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
|
|||||||||||
| 06.02.2012, 13:03 | |||||||||||
|
Имея inputStream с контентом файла - просто пишем его в oututStream открытого соединения. Как-то так:
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|||||||
| 06.02.2012, 13:18 | |||||||
существует 1000+ способов (это вам не LS) как исполнять передачу вот небольшие примерчики http://stackoverflow.com/questions/43157/e...an-outputstream Добавлено: в "старых" джавах, где присутствует sun.misc.BASE64... можно
Добавлено: стоит отметить, что классы misc не рекомендуется использовать
0
|
|||||||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 06.02.2012, 13:20 | |
|
и "тогда" можно подключать аппачевский енкодер либо на своё усмотрение
0
|
|
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
||
| 06.02.2012, 15:47 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
|
||
| 06.02.2012, 16:43 | ||
InputStream input = eo.getInputStream()
0
|
||
|
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
|
||
| 07.02.2012, 09:57 | ||
Придется заморочится с "multipart/form-data".
0
|
||
| 07.02.2012, 09:57 | |
|
Помогаю со студенческими работами здесь
18
опять про аттачи :( не отображаются аттачи в письме Аттачи: программно конвертить Аттачи: вытянуть информацию Разделение RT на 2 отдельных: текст и аттачи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|