Autor Zpráva
Georgík
Profil
Dobrý den.

Potřebuji přenášet binární data v URL po trase server - klient - server, přičemž s daty potřebuji pracovat pouze na stranách serveru.

Problém je v tom, že v URL některé znaky binárních dat není možné interpretovat přímo, ale jen přes nějaký kód na základě omezené množiny přípustných znaků.

Potřebuji to zejména proto, aby se při přístupu na stránky z vyhledávače zachovala část dat poplatných okamžiku vložení do vyhledávače. Data potom mohou být jakákoliv (jako ViewState z dotNET Framework a Visual Studia, ale lepší pro vyhledávače).

Prosím poraďte mi!

Děkuji i za snahu. Jirka - mailto:vulcain@seznam.cz
Pachollini
Profil
Je třeba znaky, které nejsou povolené v URL převést na znaky, které povolené jsou. Standardně se používá zápis %xx, kde xx je hexadecimální číslo. Např. mezera se escapuje jako %20.
Georgík
Profil
Dobrý den.

Děkuji Pachollinimu za reakci.

Nevyjádřil jsem se přesně, promiňte.

Momentálně plánuji průchod těchto binárních dat z URL v rámci funkčnosti jedné stránky následovně:
1) Kód na straně serveru uloží binární data do HTML kódu stránky jako PARAMETR FUNKCE JavaScriptu.
Celkem normální situace, kdyby ta data nebyla binární.
2) JavaScript po svém spuštění zajistí, aby se binární data například znovu mohla předat serveru.

Jenže binární data nemohu předat funkci JavaScriptu. Zřejmě je musím předtím zakódovat do formátu o němž psal Pachollini, případně nějakého pro URL ještě přijatelnějšího (kdyby nebyla k dispozici dobrá funkce či algoritmus pro Pacholliniho metodu).

Na straně klienta podobnou činnost provádí funkce escape(string), nebo modernější následovnice. Jenomže na straně serveru nevím o funkci, jejímž výstupem by byl zajištěn přijatelný vstup pro jakoukoliv JavaScriptovou funkci, nebo dokonce rovnou na tvar vhodný přímo pro proměnnou URL (query stringu) (pracuji ve Visual Studiu a dotNET Frameworku), ani o jakémkoliv obecném (nebo v jiném programovacím jazyce) dobře popsaném algoritmu, jak co možná úsporně zakódovat ta data (co se týče délky zakódovaných dat) za stejným účelem.

Prosím poraďte mi jak zakódovat ta binární data ve smyslu mých příspěvků.

Předem velice děkuji. Jirka
Georgík
Profil
Dobrý den.

Zdá se, že jsem našel řešení. V jednom ze "zákoutí" dotNET Frameworku jsem našel funkce, které provádějí konverzi tam i zpět. Formát dat se jmenuje "Base64" a je úsporný, co se spotřeby prostředků týče. Jistě bude nějaká podobná funkce i pro jazyk PHP. Zvláště verze 5, protože ta by měla podporovat i SOAP (XML - webové služby, což souvisí).

Hodně štěstí při vývoji. Jirka
Georgík
Profil
Dobrý den.

Funguje to.

Takže přenos server - klient - server proběhne takto:

- server vytvoří binární data, převede je na formát "Base64" a ten předá do stránky (například parametru JavaScriptové proměnné);

- klient uplatní fci JavaScriptu "escape" a při určité události například vyvolané uživatelem provede vyvolání serveru pomocí URL se zakódovanými daty v parametru;

- server provede dekódování provést jakési "unescape" { já jsem string projel fcí Replace(str,S"\\%[0-9A-Fa-f]{2}", new MatchEvaluator(0, *funkce*)) }, následuje převod stringu z formátu "Base64" zpět do bináru.

Kde *funkce* nahradí substring "%xx", kde xx je hexadekadické vyjádření ASCII znaku ASCII znakem.

To je snad vše. Hodně štěstí. Jirka
Toto téma je uzamčeno. Odpověď nelze zaslat.

0