Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Что может "вернуть" файл/страница csp или zen? / 20 сообщений из 20, страница 1 из 1
14.01.2011, 15:32
    #37059265
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Что может "вернуть" файл/страница csp или zen?
Пока знаю что хтмл-разметку или результат работы веб-сервиса...

А вот например картинку? Для примера:

Код: plaintext
1.
2.
3.
4.
5.
6.
div.csp {
   background: url('test.csp');
}
div.cls {
   background: url('test.cls');
}

Или чего еще... Может кто что уже делал?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
Cache for Windows (x86-32) 2009.1.3 (Build 704_0_9104) Mon Mar 8 2010 19:31:10 EST
...
Рейтинг: 0 / 0
14.01.2011, 17:04
    #37059511
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Картинку можно, документы офиса, причем генеренные, причем не документы а какие-нибудь суррогаты (XML,HTML,CSV), бинарные файлы и т.д., что вашей душе угодно.

Чтобы браузер не пытался воспроизвести это как HTML нужно поправить заголовки в методе OnPreHTTP()
...
Рейтинг: 0 / 0
14.01.2011, 17:12
    #37059536
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Также CSP может быть что-то прокси-страницы к другим сервисам, т.е. пользователь работает в одним сервером, а сам сервер каше запрашивает данные с других серверов, у нас так, например, отчеты закрыты.

Вот класс, которые отдает файлы с диска пользователю, я его порежу маленько, но суть понятна
Код: 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.
Class csp.reports.downloader Extends %CSP.Page
{

Parameter CHARSET = "CP1251";

ClassMethod OnPreHTTP() As %Boolean
{
	s filename=%request.Get("filename")
	s filetype=$p(filename,".",$l(filename,"."))
	d %response.SetHeader("Content-Disposition","attachment;filename="""_filename_"""")
	s %response.HeaderCharSet ="windows-1251"
	s %response.Expires = "Thu, 01 Apr 2003 00:00:00 GMT"

	s:filetype="xls" %response.ContentType="application/x-msexcel"
	s:filetype="xml" %response.ContentType="application/x-msexcel"
	s:filetype="txt" %response.ContentType="text/plain"
	s:filetype="log" %response.ContentType="text/plain"

 	/*вырезана проверка аутентификации*/
	if (userid="") 
          {s %response.Status="401 Unauthorized"
	q  1 
         }
 q  1 
}

ClassMethod OnPage() As %Status
{
 /*проверка аутентификации*/ 
 q:uid=""  500  
 s dir1=/*откуда-то берем*/
 s filename=dir1_%request.Get("filename")
 s file=##class(%Library.File).%New()
 s file.Name=filename
 d file.Open("RF:32000")

 ;d file.OutputToDevice()
 while 'file.AtEnd {w file.Read(32000)} 
 q  1 
}
}
...
Рейтинг: 0 / 0
14.01.2011, 22:04
    #37059945
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н.Картинку можно
А примерчик какой можно? Или ссылочки...
...
Рейтинг: 0 / 0
14.01.2011, 22:07
    #37059946
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н.я его порежу маленько, но суть понятна
Что-то не совсем... А почитать чего про это есть? На русском бы...
...
Рейтинг: 0 / 0
15.01.2011, 09:30
    #37060187
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Ээм, а что, собственно, не понятно?
Вебсервер отдает поток данных клиенту, серверу без разницы, HTML это, картинка, документ и т.д., для клиента разница заключается в заголовках документа. Т.е. CSP воспринимается как HTML только благодаря заголовкам.
Меняем заголовки - и можем получить любой другой тип данных.

>Что-то не совсем... А почитать чего про это есть? На русском бы...
Читать тут можно только про заголовки, в принципе я не заморачиваюсь и сам в целом о них не читал, только о тех что нужно.
Вот, например, http://ru.wikipedia.org/wiki/Список_заголовков_HTTP

>>Картинку можно
>А примерчик какой можно? Или ссылочки...
Картинку можно взять из потока, хранящегося на сервере,
или с диска,
или сгенерить самому (это я не пробовал, хотя сгенерить BMP файл совсем не сложно, если сильно интересно, можно и сделать).
Вам что именно интересно?

Мой пример в предыдущем посте сделан так, что браузер файл будет предлагать сохранить на диск.
Примерно такой тег должен быть:
<a target=_blank href='/myapp/csp.reports.downloader.cls?filename=log1.log' >Посмотреть лог</a>
...
Рейтинг: 0 / 0
15.01.2011, 09:31
    #37060188
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
А, еще.
На практике HTTP заголовками обычно заморачиваются PHP программисты, так что примеры надо искать на их языке.
...
Рейтинг: 0 / 0
15.01.2011, 11:37
    #37060246
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н. , направления понятны, спасибо. Пока интерес был чисто теоретический...
...
Рейтинг: 0 / 0
15.01.2011, 11:50
    #37060255
Turk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н.Вот класс, которые отдает файлы с диска пользователю, я его порежу маленько, но суть понятна
К сожалению, не все браузеры/web-серверы работают одинаково, поэтому нужно чуть расширить код. Вот мой рабочий пример:
+
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
Class csp.downloadfile Extends %CSP.Page [ ProcedureBlock ]
{

Parameter ENCODED =  0 ;

ClassMethod OnPreHTTP() As %Boolean
{
	f {
		s FullFileName = $g(%request.Data("FullFileName", 1 ))
		if (FullFileName = "") || ('##class(%File).Exists(FullFileName))
		{
			s %response.Status = "404 Not Found"
			q
		}
		#;
		s ContentType = $g(%request.Data("ContentType",1))
		s:(ContentType="") ContentType = "application/octet-stream"
		s filename = $g(%request.Data("filename",1),"")
		s:(filename="") filename = ##class(%File).GetFilename(FullFileName)
		s Descript = $g(%request.Data("Descript",1))
		s:(Descript="") Descript = filename
		#;
		s Stream = ##class(%FileBinaryStream).%New()
		s Stream.Filename = FullFileName
		#;
		s userAgent = %request.UserAgent
		if ($f(userAgent,"MSIE") > 0)
		{
			s %response.NoExp=1 //"0"
			d %response.SetHeader("Pragma","public")
			d %response.SetHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0")
			#; for IE8:
			//d %response.SetHeader("X-Content-Type-Options","nosniff")
			//d %response.SetHeader("X-Download-Options","noopen")
		}
		s:(ContentType'="") %response.ContentType = ContentType
		d %response.SetHeader("Content-Disposition","attachement; filename="_$zcvt($zcvt(filename,"O","UTF8"),"O","URL"))
		d %response.SetHeader("Content-Description",Descript)
		d %response.SetHeader("Content-Length",Stream.Size)
		d %response.SetHeader("Content-Transfer-Encoding","binary")
		#;
		//d %response.SetHeader("CACHE-CONTROL","   ")
		#;
		d Stream.%Close()
		k Stream
		#;
		q
	}
	#;
	q $$$OK
}

ClassMethod OnPage() As %Status
{
	f {
		s FullFileName = $g(%request.Data("FullFileName", 1 ))
		if (FullFileName '= "")
		{
			s Stream = ##class(%FileBinaryStream).%New()
			s Stream.Filename = FullFileName
			d Stream.OutputToDevice()
			d Stream.%Close()
			k Stream
		}
		else
		{
			&html<
<HTML>
<HEAD>
<TITLE>Закачка файлов с web-сервера</TITLE>
<SCRIPT LANGUAGE=JavaScript>
function isOpera()
{
	var n = navigator;
	var _b = n.userAgent;
	var _c = n.appVersion;
	var tv = parseFloat(_c);
	//
	var isOpera = false;
	if(_b.indexOf("Opera") >= 0)
	{
		isOpera = tv;
	}
	//
	return isOpera;
}
function GetFile(uploadTarget)
{
	var objFullFileName = document.getElementById('FullFileName');
	var objContentType = document.getElementById('ContentType');
	var objFilename = document.getElementById('filename');
	var objDescript = document.getElementById('Descript');
	//
	var url = "#(..Link(%request.PageName))#";
	url += (url.indexOf("?") < 0) ? "?" : "&";
	url += "FullFileName=" + encodeURIComponent(objFullFileName.value);
	url += "&ContentType=" + encodeURIComponent(objContentType.value);
	url += "&filename=" + encodeURIComponent(objFilename.value);
	url += "&Descript=" + encodeURIComponent(objDescript.value);
	//
	//alert(url);
	//
	if (uploadTarget == null)
	{
		window.open(url,'_blank');
	}
	else
	{
		var FR = document.getElementById(uploadTarget);
		if (!isOpera())
		{
			FR.src = url;
		}
		else
		{
			FR.contentWindow.document.location.href = url;
		}
	}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM method="GET" action="#(%request.PageName)#">
>
			w:(%session.UseSessionCookie'= 2 ) "<INPUT TYPE=hidden NAME=CSPCHD VALUE="""_%session.CSPSessionCookie_""">",!
			&html<
<TABLE>
<TR><TD>Полный путь к файлу</TD><TD><INPUT TYPE=text id='FullFileName' NAME=FullFileName VALUE=""></TD></TR>
<TR><TD>Тип содержимого</TD><TD><INPUT TYPE=text id='ContentType' NAME=ContentType VALUE=""></TD></TR>
<TR><TD>Отображаемое имя файла</TD><TD><INPUT TYPE=text id='filename' NAME=filename VALUE=""></TD></TR>
<TR><TD>Описание</TD><TD><INPUT TYPE=text id='Descript' NAME=Descript VALUE=""></TD></TR>
<TR><TD COLSPAN= 2 >
<INPUT TYPE=submit VALUE="Скачать (FORM)">
<INPUT TYPE=button VALUE="Скачать (window.open)" onClick="GetFile();">
<INPUT TYPE=button VALUE="Скачать (iframe)" onClick="GetFile('upload_target');">
</TD></TR>
</TABLE>
</FORM>
<IFRAME id='upload_target' NAME='upload_target' SRC='' STYLE='width:100%; height:100px; display:none'></IFRAME>
</BODY>
</HTML>
>
		}
		#;
		q
	}
	#;
	q $$$OK
}

}
...
Рейтинг: 0 / 0
15.01.2011, 12:36
    #37060293
Евегний
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Всем доброго времени суток, так как вопрос схожий то размещу его здесь.
Есть тест сделаный на JavaScript с подсчетом около 20 параметров которые надо потом записать в БД, каким образом лучше всего это сделать?
У меня на уме пока только вариант создания CSP страницы посредством Cache studio с привязкой к искомым полям и потом вкручеванием в неё кода теста...
...
Рейтинг: 0 / 0
15.01.2011, 14:41
    #37060388
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Евегний,

слабо понял, что вам нужно и как ваш вопрос связан с предыдущим обсужением.
В чем заключается проблема?
...
Рейтинг: 0 / 0
15.01.2011, 14:47
    #37060399
Евегний
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Вопрос: Как передать параметры из JS в БД?
...
Рейтинг: 0 / 0
15.01.2011, 15:01
    #37060415
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Во!, так значительно лучше :-)

Либо гиперевентом, при этом страница не будет перегружена, либо субмитом формы, при этом страница обновится, либо произвольным URL с параметрами.
Гиперевенты:
http://localhost:57772/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_tagbased#GCSP_C149716

URL с параметрами (и формы также, по сути)
- формируете запрос типа
Код: plaintext
location.href='/myapp/testp.csp?param1= 1111 &param2= 3333 '
а в самой CSP ловите переданные параметры через
Код: plaintext
1.
2.
3.
<server>
w %request.Get("param1")
w %request.Get("param2")
</server>
...
Рейтинг: 0 / 0
15.01.2011, 15:08
    #37060422
Евегний
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Спасибо огромное! *низкий поклон*
...
Рейтинг: 0 / 0
16.01.2011, 17:42
    #37061336
Евегний
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
В процесе столкнулся с ещё одним путающим моментом.
переменная вычисляется джаваскриптом таким кодом:
Код: plaintext
var erm = GetSumOfAnswers("q1", "q4", "q32", "q58", "q60", "q70", "q75", "q84", "q92", "q111", "q127", "q132");
это форма ввода в csp странице:
Код: plaintext
<input type='text' name='erm' cspbind='erm' size=' 10 ' csprequired>

Вопрос: можно ли как-то объединить их в рамках одной страницы?
...
Рейтинг: 0 / 0
16.01.2011, 20:38
    #37061475
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Так?
Код: plaintext
document.forms.form1.erm.value=GetSumOfAnswers("q1", "q4", "q32", "q58", "q60", "q70", "q75", "q84", "q92", "q111", "q127", "q132");
...
Рейтинг: 0 / 0
16.01.2011, 22:05
    #37061560
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н. , это "устаревший" синтаксис... Рекомендуют использовать

Код: plaintext
<input type='text' id='erm' name='erm' cspbind='erm' size=' 10 ' csprequired />
Код: plaintext
document.getElementById('erm').value=GetSumOfAnswers("q1", "q4", "q32", "q58", "q60", "q70", "q75", "q84", "q92", "q111", "q127", "q132");
...
Рейтинг: 0 / 0
17.01.2011, 01:01
    #37061656
Евегний
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Ещё раз спасибо! Работает на ура!
...
Рейтинг: 0 / 0
17.01.2011, 13:09
    #37062310
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
krvsa,

не вижу, где тут ID.
erm - это имя.
...
Рейтинг: 0 / 0
17.01.2011, 13:18
    #37062345
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что может "вернуть" файл/страница csp или zen?
Блок А.Н.не вижу, где тут ID.
В своём примере я его добавил...
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Что может "вернуть" файл/страница csp или zen? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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