2013-01-18 18 views
6

यदि मैंने पोर्ट प्रोजेक्ट पर अपने प्रोलॉग HTTP सर्वर को localhost पर बाध्य किया है, तो मैं अपनी छवियों के लिए सही मार्ग कैसे बना सकता हूं?प्रोलॉग द्वारा गतिशील रूप से सेवा किए गए HTML पृष्ठ में कोई छवि कैसे शामिल करें?

<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>, जहाँ "ext" विस्तार के लिए खड़ा है: उदाहरण के लिए, अगर मेरे .pl फ़ाइलें और .jpg या .png फ़ाइलें डेस्कटॉप, मैं कैसे कर सकता हूँ सर्वर पर स्थित हैं इस तरह कोड उत्पन्न करते हैं। मैंने एसडब्ल्यूआई-प्रोलॉग और this tutorial के प्रलेखन पर एक नज़र डाली है, लेकिन मुझे लगता है कि सभी अमूर्त पथ बहुत भ्रमित हैं। मुझे वेब सर्वर के साथ बहुत अनुभव मिला है, लेकिन यह बहुत अलग है और मुझे इसे समझने में भयानक समस्याएं हैं। के लिए अग्रिम में फिर से

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

धन्यवाद:

यहाँ मेरी कोशिश है, मैं क्या सीखा है (या कम से कम मुझे लगता है कि मेरे पास है) से बना SWI-Prolog दस्तावेज और उपर्युक्त ट्यूटोरियल भर है आपका विशाल धैर्य :-)

उत्तर

7

यह सच है कि आपकी समस्या का समाधान करना आसान नहीं है। कृपया ध्यान से this 'कैसे करें' पृष्ठ, अनुभाग Serving many 'server support' files पढ़ें।

यहाँ कोड मैं परीक्षण किया है: कि संसाधनों

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

मैं ध्यान दें

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

और HTML का उपयोग करता है कि दोनों विनिर्देशों img(src='images/swipl.png')औरimg(src='/images/swipl.jpeg') काम करते हैं, और इस 'सुविधा' योगदान इंटरफ़ेस व्यवहार को धुंधला करने के लिए।

यहाँ

उत्पादन

enter image description here

HTH

+0

क्या यह सीएसएस और जेएस फाइलों के लिए काम करता है? –

1

याद रखें कि prolog सर्वर वास्तव में सर्वर, नहीं अपाचे के लिए एक प्लग-इन है। इसका मतलब है कि आपको प्रोलॉग को छवि की सेवा करने की आवश्यकता है। निस्संदेह यह है कि आपका वेब सर्वर स्थैतिक फाइलें भेजना बहुत आसान है, इसलिए कार्लो का उदाहरण वास्तव में छवि निर्देशिका और HTML को शामिल करने के लिए करता है।

संबंधित मुद्दे