2013-01-18 10 views
6

Jeśli powiązałem mój serwer HTTP Prolog z localhost w porcie 9000, w jaki sposób mogę sprawić, aby Prolog wygenerował właściwą ścieżkę dla moich obrazów? Na przykład, jeśli moje .pl pliki i .jpg lub .png pliki znajdują się na pulpicie, jak mogę uczynić serwer generowania kodu:Jak zawrzeć obraz na stronie HTML obsługiwanej dynamicznie przez Prolog?

<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>, gdzie „ext” oznacza rozszerzenie. Przyjrzałem się dokumentacji SWI-Prolog i this tutorial, ale uważam, że wszystkie te abstrakcyjne ścieżki są bardzo mylące. Mam duże doświadczenie z serwerami sieciowymi, ale jest to dużo inne i mam okropne problemy z jego zrozumieniem.

Oto moja próba, składa się z tego, co nauczyłem się (lub przynajmniej myślę, że mam) całej dokumentacji SWI-Prolog i wyżej wspomnianym poradniku:

:- use_module(library(http/thread_httpd)). 
:- use_module(library(http/http_dispatch)). 
:- use_module(library(http/http_parameters)). 
:- use_module(library(http/html_write)). 
file_search_path('*', 'C:\\Users\\Luka\\Desktop\\'). 

server(Port) :- 
    http_server(http_dispatch, [port(Port)]). 

:- http_handler(root(.), render_base, []). 
:- http_handler('/form', process_form, []). 

process_form(Request) :- 
    http_parameters(Request, 
      [name(Name,[atom])]), 
      reply_html_page('Posted data: ',['',Name]). 

render_base(_Request) :- 
    reply_html_page(
     title('Naslov'), 
     img([src='/image.png', alt='Incident']) 
    ). 

Jeszcze raz dziękuję z góry za twoja ogromna cierpliwość. :-)

Odpowiedz

7

To prawda, że ​​nie jest łatwo rozwiązać twój problem. Przeczytaj uważnie this "jak" strona, sekcja Serving many 'server support' files.

Oto kod I przetestowane:

http:location(images, root(images), []). 
user:file_search_path(icons, '/home/carlo/prolog'). 
:- http_handler(images(.), serve_files_in_directory(icons), [prefix]). 

i HTML, który wykorzystuje te środki

intro --> 
    html([p(ol([li('select a path'), 
      li('scan resources from it'), 
      li('RDF-ize them'), 
      li('browse with foldable SVG') 
      ])), 
      \sep, 
      'png before', img(src='images/swipl.png'), 'png after', 
      \sep, 
      'jpeg before', img(src='/images/swipl.jpeg'), 'jpeg after' 
     ]). 

Pragnę zauważyć, że obie specyfikacje img(src='images/swipl.png')iimg(src='/images/swipl.jpeg') pracy, a to przyczynia 'funkcja' zamazywać zachowanie interfejsu.

Tutaj wyjście

enter image description here

HTH

+0

Czy działa dla plików css i js? –

1

Pamiętaj, że serwer prolog jest rzeczywiście serwerze, a nie plug-in do apache. To oznacza, że ​​musisz mieć prolog wyświetlać obraz. Oczywiście bardzo przydatny jest serwer wysyłania statycznych plików, więc przykład Carla rzeczywiście obsługuje zarówno katalog obrazów, jak i html, aby je uwzględnić.

Powiązane problemy