Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ввод графики посредством CSP форм / 25 сообщений из 37, страница 1 из 2
17.05.2007, 23:45
    #34534155
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Доброго времени.
Имееи примитивную бд-ID,ФИО,фото.Суть вопроса. Насколько я понял в каше графическое изобраение может хранить класс %BinaryStream. Вопрос. Как а)осуществить вывод графики в CSP форме. б)как осуществить "диалог ввода"(сорри за дельфовый термин)в общем любой способ ввода графики в бд. спс
...
Рейтинг: 0 / 0
18.05.2007, 00:20
    #34534180
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Или вожможно я неправильно что-то понял. В общем скажите плз как вообще работать с графикой в каше.
...
Рейтинг: 0 / 0
18.05.2007, 06:20
    #34534302
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Для CSP концепт может выглядить примерно так :

Делаем класс, например Interface.ImageGet - наследуем его от %CSP.Page - задача класса переопределить заголовок Content-Type на "image/jpeg" и выводить %BinaryStream в качестве тела страницы.

В странице где необходимо вывести картинку пишем что то вроде

Код: plaintext
<img src="/path_for_csp/Interface.ImageGet.cls?id=22">

PS: может еще кто посоветует
...
Рейтинг: 0 / 0
18.05.2007, 08:22
    #34534388
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Для 5.0 есть даже примерчик http://127.0.0.1:1972/csp/samples/streamserve.csp
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
19.05.2007, 14:48
    #34537501
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Ок,спс будем думать
...
Рейтинг: 0 / 0
20.05.2007, 12:58
    #34538042
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Подумал. Так и не придумал-каким образом сделать так чтобы можно было динамически загружать картинку.Т.Е. к примеру у нас имеется окно для ввода пути,нажимаем-отображается картинка.Помогите плз кто знает,очень надо :(
...
Рейтинг: 0 / 0
20.05.2007, 21:24
    #34538401
aleshap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Хм...вас же явно сослали на стандартный пример Cache
http://127.0.0.1:1972/csp/samples/streamserve.csp
...
Рейтинг: 0 / 0
20.05.2007, 21:42
    #34538412
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Я его рассмотрел да,но вот как к примеру сделать такое
имеем на форме-инпут типа текст и кнопку . туда вводим путь к файлу,а на кнопке висит скрипт который должен бы соеденить стрим с картинкой и показать ее на форме....возможно я сильно туплю,но блин я весь инет облазил в поисках любой инфы по этой теме а толку-0
...
Рейтинг: 0 / 0
21.05.2007, 08:11
    #34538650
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Вместо этого файла /csp/samples/ClassLogo.jpg укажи свой из инпута...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<!-- Copyright (c) 2001 InterSystems Inc. ALL RIGHTS RESERVED. -->
<csp:class description="Demo of serving a stream with the <b>%CSP.StreamServer</b>.">

<html>

<head>
</head>

<body bgcolor=#CCCCFF>

<!-- display standard sample template using a custom tag -->
<isc:SAMPLE title="Serving a stream">
This sample uses the <b>%CSP.StreamServer</b> class to server up a stream
that is stored in Caché, for the example we use the ClassLogo.jpg
from the documentation directory, but this can be a file stream, global stream
or any other type of stream.
</isc:SAMPLE>

<script language=Cache runat=Server>
    // This code is just to get the oref of a stream. Normally you would have
    // one as a property of the object you are interested in, however for this
    // example I will create a stream that points to the ClassLogo.jpg file
    // that is in the csp/samples directory, but normally you would do something
    // like 'Set oref=##class(YourClass).%OpenId(id),stream=oref.Stream' to get
    // the oref.
    Set stream=##class(%FileBinaryStream).%New()
    //
    // The stream we wish to link to for this example is in the samples directory
    Set filename=$$GetFilename^%apiCSP("/csp/samples/ClassLogo.jpg")
    Do stream.LinkToFile(filename)
    
    // Now get the id of the stream which is the piece we really want
    Set oid=stream.GetStreamId()
</script>

<p align=center>

<!-- The trick is the use the encrpyted oid of the stream as the parameter to the stream server -->
<IMAGE SRC=%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#>

</p>
<br>

</body>
</html> 
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
21.05.2007, 19:02
    #34540580
NLP_Cadet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
В общем-то это я понял...я не мог понять как сделать динамическое обновления,даже через инпут...спасибо в любом случае
...
Рейтинг: 0 / 0
22.05.2007, 08:15
    #34541195
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
NLP_Cadetкак сделать динамическое обновления
Так это уже другая история! Например перегрузить страницу...
...
Рейтинг: 0 / 0
22.05.2007, 10:42
    #34541483
aleshap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Для динамического обновления можешь использовать <IFRAME id='ifrm'> </IFRAME> тогда данную ситуацию можно с легкостью реализовать...
Код: plaintext
1.
<INPUT TYPE=BUTTON onClick='var frm=document.getElementById("ifrm"); if (frm) { frm.src=page;} '/>
где page - ссылка на страницу...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.01.2014, 15:16
    #38529726
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Пробовал и по примеру...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script language='Cache' runat='Server'>
s stream=obj.img
s fileimg=$$GetFilename^%apiCSP("/nsadm/imgtmp/logo.png")
d stream.LinkToFile(fileimg)
s oid=stream.GetStreamId()
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<image src='%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#' />
	</div>
</div>


Но получаю ошибку
На странице возникла ошибка исполнения
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
 Ошибка: <METHOD DOES NOT EXIST>%csp00002+88^air.nsadm.tsk.edit.page.1 *LinkToFile,%Stream.GlobalBinary
 Номер Ошибки: 5002
 CSP-Cтраница: /nsadm/tsk/edit/page.csp
 Область: VERS
 Класс: air.nsadm.tsk.edit.page
 Программа: air.nsadm.tsk.edit.page.1
 Расположение: %csp00002+88
 Line:  d stream.LinkToFile(fileimg)


Т.ч. вопрос вывода картинки из свойства класса так для меня и остается открытым... :((

Вот сам класс
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
/// Задача
Class ns.dat.tsk Extends %Persistent
{

/// Идентификатор
Property identifier As %String(COLLATION = "Exact");

/// Название
Property description As %String(COLLATION = "Exact", MAXLEN = 400);

/// Идентификатор логотипа
Property imgIdent As %String(COLLATION = "Exact", MAXLEN = 400);

/// identifier
Index identifier On identifier [ Data = identifier, Unique ];

/// img
Property img As %Stream.GlobalBinary;

}
...
Рейтинг: 0 / 0
17.01.2014, 15:25
    #38529741
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa,

Код: sql
1.
2.
3.
4.
5.
s o=##class(RTT.PLAYER).%OpenId(tID,,.sc)

q:$$$ISERR(sc) sc
s img=..%GetComponentById("img")
s img.streamId=o.fotos.GetAt(1).fBin.%Oid()



так должно заработать
...
Рейтинг: 0 / 0
17.01.2014, 15:25
    #38529743
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
это в случае с ZEN
...
Рейтинг: 0 / 0
17.01.2014, 15:26
    #38529748
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Нашел теперешний пример вывода картинки...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
<!-- Copyright (c) 2001 InterSystems Inc. ALL RIGHTS RESERVED. -->
<csp:class description="Demo of serving a stream with the <b>%CSP.StreamServer</b>.">

<html>

<head>
</head>

<body bgcolor="#CCCCFF">

<!-- display standard sample template using a custom tag -->
<isc:SAMPLE title="Serving a stream">
 This sample uses the <b>%CSP.StreamServer</b> class to server up a stream
 that is stored in Cach&eacute;, for the example we use the ClassLogo.jpg
 from this sample directory, but this can be a file stream, global stream
 or any other type of stream.
</isc:SAMPLE>

<script language="Cache" runat="server">
     // This code is just to get the oref of a stream. Normally you would have
     // one as a property of the object you are interested in, however for this
     // example I will create a stream that points to the ClassLogo.jpg file
     // that is in the csp/samples directory, but normally you would do something
     // like 'Set oref=##class(YourClass).%OpenId(id),stream=oref.Stream' to get
     // the oref.
     Set stream=##class(%FileBinaryStream).%New()
     //
     // The stream we wish to link to for this example is in the samples directory
     Set filename=$$GetFilename^%apiCSP("/csp/samples/ClassLogo.jpg")
     Do stream.LinkToFile(filename)
     
     // If you want to set the ContentType to serve this stream use
     Do stream.SetAttribute("ContentType","image/jpeg")
     
     // If you want to allow this file to be cached (sometimes a good idea with IE
     // due to a bug where if you server up a Word document for example without
     // allowing IE to cache this then IE 'loses' the document before it passes
     // it to Word, allowing a small expiration solves this).
     Do stream.SetAttribute("Expires",600)
     
     // Now get the id of the stream which is the piece we really want
     Set oid=stream.%Oid()
</script>

<p align="center">

<!-- The trick is the use the encrypted oid of the stream as the STREAMOID parameter to the stream server -->
<image src="%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#">

</p>
<br>

</body>
</html>


Но тут jpg, а у меня png...

Переделал свой пример так
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<script language='Cache' runat='Server'>
s stream=obj.img
;s fileimg=$$GetFilename^%apiCSP("/nsadm/imgtmp/logo.png")
;d stream.LinkToFile(fileimg)
Do stream.SetAttribute("ContentType","image/png")
Do stream.SetAttribute("Expires",600)
s oid=stream.stream.%Oid()
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<image src='%25CSP.StreamServer.cls?STREAMOID=#(..Encrypt(oid))#' />
	</div>
</div>


Но все равно ошибка...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
На странице возникла ошибка исполнения
 Ошибка: <METHOD DOES NOT EXIST>%csp00002+89^air.nsadm.tsk.edit.page.1 *SetAttribute,%Stream.GlobalBinary
 Номер Ошибки: 5002
 CSP-Cтраница: /nsadm/tsk/edit/page.csp
 Область: VERS
 Класс: air.nsadm.tsk.edit.page
 Программа: air.nsadm.tsk.edit.page.1
 Расположение: %csp00002+89
 Line:  Do stream.SetAttribute("ContentType","image/png")
...
Рейтинг: 0 / 0
17.01.2014, 15:28
    #38529751
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Ymka2007это в случае с ZEN
У меня CSP... Там наверно и методов таких нет...
...
Рейтинг: 0 / 0
17.01.2014, 15:42
    #38529781
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa,

во, нашел
Код: sql
1.
2.
/// ссылка на фото
Property fotos As list Of hndb.files;

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Class hndb.files Extends %Persistent
{

/// бинарный файл в глобали
Property fBin As %GlobalBinaryStream;

/// имя файла оно же для миниатюр
Property fName As %String(MAXLEN = 200, TRUNCATE = 1);

/// путь к файлу на сервере (директория которая должна быть видна из внешней сети)
Property fPath As %String(MAXLEN = 500, TRUNCATE = 1);

/// имеется ли миниатюра
Property hasThumb As %Boolean [ Calculated, SqlComputeCode = {
	 set {*}=##class(hndb.files).getHasThumb({fName},{fPath},1)}, SqlComputed ];

Property fThumb As %String [ Calculated, SqlComputeCode = {
	 set {*}=##class(hndb.files).getHasThumb({fName},{fPath},2)}, SqlComputed ];

Property fFile As %String [ Calculated, SqlComputeCode = {
	 set {*}=##class(hndb.files).getHasThumb({fName},{fPath},3)}, SqlComputed ];

/// метод возвращает признак наличия миниатюры (par=1)
/// или полный путь к файлу миниатюры (par=2) 
ClassMethod getHasThumb(fName, fPath, par) As %String
{
}


Код: sql
1.
s cb.src=$ZCVT(##class(%CSP.Page).Link("%25CSP.StreamServer.cls?STREAMOID="_##class(%CSP.Page).Encrypt(o.trainer.fotos.GetAt(1).fBin.%Oid())),"O","HTML")
...
Рейтинг: 0 / 0
17.01.2014, 15:45
    #38529788
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa,

все файлы, загружаемые на сервер тем или иным образом прогоняю через справочник, потом проще работать
...
Рейтинг: 0 / 0
17.01.2014, 16:00
    #38529814
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Ymka2007 , вот вроде как у тебя

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language='Cache' runat='Server'>
s oid=$ZCVT(obj.img.%Oid(),"O","HTML")
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<img src='data:image/png;base64,#(..Encrypt(oid))#' />
	</div>
</div>


Но картинки нет...
...
Рейтинг: 0 / 0
17.01.2014, 16:01
    #38529816
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Саму картинку в класс грузил вот так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
loadFile(File,Class,Id)
	n o,val,oc,ok
	s:$g(File)="" File="d:\box\tmp\logo.png"
	s:$g(Class)="" Class="ns.dat.tsk"
	s:$g(Id)="" Id=1
	s o=##class(%File).%New(File)
	d o.Open("RS")
	s oc=$classmethod(Class,"%OpenId",Id)
	s ok=oc.img.CopyFrom(o)
	s ok=oc.%Save()
	k oc
	d o.Close()
	k o
	zw val
	q:$q 1
	q
...
Рейтинг: 0 / 0
17.01.2014, 16:07
    #38529825
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa Ymka2007 , вот вроде как у тебя

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language='Cache' runat='Server'>
s oid=$ZCVT(obj.img.%Oid(),"O","HTML")
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<img src='data:image/png;base64,#(..Encrypt(oid))#' />
	</div>
</div>


Но картинки нет...
Не доделал...

Вот как

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language='Cache' runat='Server'>
s oid=$ZCVT(obj.img.%Oid(),"O","HTML")
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<image src='%25CSP.StreamServer.cls?STREAMOID=##(..Encrypt(oid))#' />
	</div>
</div>


Но все равно картинки нет...
...
Рейтинг: 0 / 0
17.01.2014, 16:11
    #38529831
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
Так вот еще переделал...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language='Cache' runat='Server'>
s oid=$ZCVT(..Link("%25CSP.StreamServer.cls?STREAMOID="_..Encrypt(obj.img.%Oid())),"O","HTML")
</script>
<div class='mvr_screen_box scr1_box1'>
	<div class='mvr_field_line'>
		<label class='mvr_field_label' for='id_imgIdent'>Идентификатор логотипа</label>
		<input class='mvr_field_text' id='id_imgIdent' name='id_imgIdent' type='text' cspbind='imgIdent' />
	</div>
	<div class='mvr_field_line'>
		<image src='#(oid)#' />
	</div>
</div>


Нет картинки...
...
Рейтинг: 0 / 0
17.01.2014, 17:13
    #38529938
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa,

img - как определен?

помнится я долго и..ся, пока понял что у меня работает

у меня Property fBin As %GlobalBinaryStream; - хранение в глобали имяклассаS

там методы у разных "похожих" типов отличаются и не всегда работают
...
Рейтинг: 0 / 0
17.01.2014, 17:20
    #38529946
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод графики посредством CSP форм
krvsa,

попробуй для начала zen страницу сварганить с элементом <image>

в методе %OnAfterCreatePage
возьми этот элемент
s cb=..%GetComponentById("fs1img")

а потом опредли src

s cb.src=$ZCVT(##class(%CSP.Page).Link("%25CSP.StreamServer.cls?STREAMOID="_##class(%CSP.Page).Encrypt(o.trainer.fotos.GetAt(1).fBin.%Oid())),"O","HTML")

вызови на просмотр

если пойдет, то наверно нужно смотреть что не выполняется <img src='#(oid)#'/>
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ввод графики посредством CSP форм / 25 сообщений из 37, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]