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

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

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

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

PS: может еще кто посоветует
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34534388
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 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
Ввод графики посредством CSP форм
    #34537501
NLP_Cadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок,спс будем думать
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34538042
NLP_Cadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подумал. Так и не придумал-каким образом сделать так чтобы можно было динамически загружать картинку.Т.Е. к примеру у нас имеется окно для ввода пути,нажимаем-отображается картинка.Помогите плз кто знает,очень надо :(
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34538401
aleshap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...вас же явно сослали на стандартный пример Cache
http://127.0.0.1:1972/csp/samples/streamserve.csp
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34538412
NLP_Cadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я его рассмотрел да,но вот как к примеру сделать такое
имеем на форме-инпут типа текст и кнопку . туда вводим путь к файлу,а на кнопке висит скрипт который должен бы соеденить стрим с картинкой и показать ее на форме....возможно я сильно туплю,но блин я весь инет облазил в поисках любой инфы по этой теме а толку-0
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34538650
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо этого файла /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
Ввод графики посредством CSP форм
    #34540580
NLP_Cadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем-то это я понял...я не мог понять как сделать динамическое обновления,даже через инпут...спасибо в любом случае
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34541195
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NLP_Cadetкак сделать динамическое обновления
Так это уже другая история! Например перегрузить страницу...
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #34541483
aleshap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для динамического обновления можешь использовать <IFRAME id='ifrm'> </IFRAME> тогда данную ситуацию можно с легкостью реализовать...
Код: plaintext
1.
<INPUT TYPE=BUTTON onClick='var frm=document.getElementById("ifrm"); if (frm) { frm.src=page;} '/>
где page - ссылка на страницу...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ввод графики посредством CSP форм
    #38529726
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал и по примеру...

Код: 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
Ввод графики посредством CSP форм
    #38529741
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Ввод графики посредством CSP форм
    #38529743
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это в случае с ZEN
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #38529748
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел теперешний пример вывода картинки...

Код: 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
Ввод графики посредством CSP форм
    #38529751
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007это в случае с ZEN
У меня CSP... Там наверно и методов таких нет...
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #38529781
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Ввод графики посредством CSP форм
    #38529788
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

все файлы, загружаемые на сервер тем или иным образом прогоняю через справочник, потом проще работать
...
Рейтинг: 0 / 0
Ввод графики посредством CSP форм
    #38529814
Фотография 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>


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

Код: 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
Ввод графики посредством CSP форм
    #38529825
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ввод графики посредством CSP форм
    #38529831
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот еще переделал...

Код: 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
Ввод графики посредством CSP форм
    #38529938
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

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

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

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

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


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