2013-01-18 18 views
6

Prolog HTTP sunucumu, 9000 numaralı bağlantı noktasından localhost'a bağladıysam, Prolog'un görüntülerim için doğru yolu nasıl oluşturabilirim?Görüntü, Prolog tarafından Dinamik Olarak Sunulan bir HTML Sayfasına Nasıl Eklenir?

<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>, "ext" uzantısı açılımı: my .pl dosya ve .jpg veya .png dosyalarım sunucu yapmak nasıl masaüstü, üzerinde bulunur Örneğin, böyle bir kod üretir. SWI-Prolog ve this tutorial belgelerine bir göz attım, ama tüm bu soyut yolları çok kafa karıştırıcı buluyorum. Web sunucularında çok fazla deneyime sahibim, ama bu çok farklı ve bunu anlamakta zorlanıyor. için şimdiden tekrar

:- 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']) 
    ). 

Teşekkür: Burada

SWI-Prolog belgeler ve yukarıda belirtilen öğretici boyunca öğrendiğim (ya da en azından sanırım buldum) neyi oluşan benim denemeydi olduğunu senin büyük sabrın. :-)

cevap

7

Sorununuzu çözmek kolay olmayan doğrudur. Lütfen dikkatle okuyun this 'Nasıl yapılır' sayfası, bölüm Serving many 'server support' files. İşte

ben test kodu: kaynakları

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' 
     ]). 

Ben unutmayın

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

ve kullandığı HTML her iki teknik özellikleri img(src='images/swipl.png')veimg(src='/images/swipl.jpeg') çalışmaları ve bu 'özelliği' katkıda bulunur arayüz davranışını bulanıklaştırmak için. İşte

enter image description here

HTH

+0

CSS ve js dosyaları için çalışıyor mu? –

1

prolog sunucu gerçekten Apachenin SUNUCU değil, bir eklenti olduğunu unutmayın çıktı. Bu, görüntüye prolog eklemeniz gerektiği anlamına gelir. Tabii ki, web sunucunuzun statik dosyalar göndermesini sağlamak çok kullanışlı, bu yüzden Carlo'nun örneği aslında hem resim dizinine hem de içerecek html'ye hizmet ediyor.