2013-01-18 2 views
6

Prolog HTTP 서버를 포트 9000에서 localhost으로 연결 한 경우 어떻게하면 Prolog가 내 이미지의 올바른 경로를 생성하게 할 수 있습니까?Prolog에서 동적으로 제공되는 HTML 페이지에 이미지를 포함시키는 방법?

<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>, "내선은"확장을 의미합니다 : 내 .pl 파일과 .jpg 또는 .png 파일이 내가 서버를 어떻게해야합니까 바탕 화면에있는 경우 예를 들어, 다음과 같은 코드를 생성합니다. SWI-Prolog 및 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 - 프롤로그 문서 및 상기 자습서를 통하여 내가 배운 (또는 적어도 내가 생각) 무엇으로 구성 내 시도이다 너의 거대한 인내. :-)

답변

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

css 및 js 파일에서 작동합니까? –

1

는 프롤로그 서버가 실제로 아파치에 서버가 아닌 플러그 인 것을 기억 출력. 즉, 프롤로그에 이미지를 제공해야합니다. 물론 웹 서버에 정적 파일을 보내는 것이 매우 편리하므로 Carlo의 예제는 실제로 이미지 디렉토리와 html을 모두 포함하도록 제공합니다.

관련 문제