1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Вывод изображение в Stream в браузер с помощью агента

Тема в разделе "Lotus - Программирование", создана пользователем mortikanis, 2 дек 2009.

  1. mortikanis

    mortikanis Гость

    Репутация:
    0
    Господа, есть вопрос.
    Существует агент, в котором генерируется поток с изображением. Каким образом осуществить, дабы при вызове этого агента из браузера посредством agent?openagent, этот агент возвращал в браузер это изображение?
    Спасибо)
     
  2. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Можка принтануть соответсвующий content type и потом данные?
    Хотя конечно вряд ли...
     
  3. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
    бинарный стрим есть в java ...
    но (и здесь тоже :) ) джава от ИБМ, не "всё делает" и "не везде" - он не работает корректно:
    http://lekkimworld.com/2005/11/12/creating...for_domino.html

    потому есть способ - формировать док, в него класть файл, а в браузер возвращать url этого файла (в доке)
    хотя - не во всех случаях это подойдет
    возврат урла (на всяк) - в брекетах []
     
  4. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
  5. NetWood

    NetWood Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    17 апр 2008
    Сообщения:
    367
    Симпатии:
    14
    имхо через agent?openagent это не очень. мягко говоря.
    вот по WQO открывать агент на форме и генерить в RTF поле чего желается - самое то.
    пример с таблица тут http://codestore.net/apps/htmlareas.nsf/calendar
    база здесь http://codestore.net/store.nsf/unid/DOMT-7...file/butter.zip
     
  6. mortikanis

    mortikanis Гость

    Репутация:
    0
    lmike
    Ну вообщем пытался делать по аналогии,без генерации чего либо как в этой статье http://www.codestore.net/store.nsf/rsrc/bl...le/captcha.java

    с самого начала от предыдущих действий у меня есть outputstream под названием stream1, которое выводилось в диалоговое окно. Теперь хочу вывести в браузер

    Код:
    			//Ну собственно создаю бинарный стрим и записываю туда мой outputstream. Ну а далее создается Notes Stream, в который пишется бинарный. Как в примере. Чехарда
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    os.writeTo(stream1);
    Stream stream=session.createStream();
    stream.write( os.toByteArray() );
    
    // далее мы создаём временный документ для хранения изображения
    Document tmp = db.createDocument();
    tmp.replaceItemValue("Form", "Captcha");
    
    // далее как я понял создается уникальное имя для джепеговского файла, что допустим на данный момент не обязательно и опустим и это
    
    /*	String id = doc.getItemValueString("Query_String").replaceAll("openagent&", "");
    String filename = id+".jpg";
    
    tmp.replaceItemValue("ID", id);
    tmp.replaceItemValue("Answer",session.hashPassword(finalString.toString())); */
    String filename = "test.jpg"
    
    // Идет присоединение файла к документу
    
    MIMEEntity Body = tmp.createMIMEEntity();
    
    MIMEHeader header = Body.createHeader("content-disposition");
    header.setHeaderVal("attachment;filename=\""+filename+"\"");
    
    Body.setContentFromBytes(stream, "image/jpeg", MIMEEntity.ENC_IDENTITY_BINARY);
    tmp.save();
    
    // и собственно вывод этого файла. 
    
    pw.println("Location: /"+db.getFilePath().replaceAll("\\\\", "/")+"/0/"+tmp.getUniversalID() + "/$file/"+filename);
    Однако же, в браузере мне пишет исключительно Agent done.
    Иные предыдущие действия(вывод изображения в диалоговом окне), браузер выполняет.
     
  7. mortikanis

    mortikanis Гость

    Репутация:
    0
    Похимичил, стал писать, что невозможно найти страницу.
    Хм, а в таком же случае файл этот находиться не там будет. Если без всей этой случайной генерации. Но где? Как правильно адрес к нему прописать?
     
  8. KFire3

    KFire3 Гость

    Репутация:
    0
    Хмм, а разве нельзя написать в агенте Print var, где var - это String с бинарными данными?
    Естественно сначала content type вывести.
     
  9. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
    надо не забывать - в базе обязана быть дефолтная вьюшка!

    я выводил как сам и описывал (в квадратных скобках):
    Код:
    				Vector v = body.getEmbeddedObjects();
    Enumeration e = v.elements();
    if (e.hasMoreElements()){
    String docHttp=docUpdate.getHttpURL();
    if (docHttp.equals("")){pw.println("http URL is not defined, notes URL>"+docUpdate.getNotesURL()); return 0;}
    System.out.println(docHttp);
    int i=docHttp.indexOf("?");
    int pos= i == (-1) ? docHttp.indexOf("!"): i;
    String address="["+docHttp.substring(0,pos)+"/$FILE/"+((EmbeddedObject)e.nextElement()).getName()+"]";
    //					address= docHttp.substring(pos);
    pw.println(address);
    return 0;
    }
    в случае выше - енумерация не нужна, имя файла и так есть
    а в получение пути ка базе - нет необходимости (используйте .getHttpURL() для дока)

    Добавлено: KFire3
    нельзя ибо принт выводит текст и никаких бинарников и майм типы (не текстовые) будут побоку
     
Загрузка...

Поделиться этой страницей