6

Prolog HTTPサーバーをlocalhostポート9000にバインドした場合、Prologに画像の正しいパスを生成させるにはどうすればよいですか?たとえば、.plファイル.jpg.pngファイルがデスクトップにある場合、サーバーに次のようなHTMLコードを生成させるにはどうすればよいですか。

<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>

extパーツは拡張を表します。私はSWI-Prologのドキュメントとこのチュートリアルを見てきましたが、その抽象的なパスはすべて非常に紛らわしいと思います。私はWebサーバーについて多くの経験を積んでいますが、これは大きく異なり、理解するのにひどい問題を抱えています。

これが私の試みであり、SWI-Prologのドキュメントと上記のチュートリアルを通して私が学んだこと(または少なくとも私が持っていると思うこと)で構成されています。

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

何卒ご理解とご協力を賜りますようお願い申し上げます。:-)

4

2 に答える 2

7

あなたの問題を解決するのは簡単ではないのは事実です。この「ハウツー」ページのセクションを注意深くお読みくださいServing many 'server support' files

これが私がテストしたコードです:

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

そしてそのリソースを使用するHTML

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

img(src='images/swipl.png') 仕様と 動作の両方に注意しimg(src='/images/swipl.jpeg')ます。この「機能」は、インターフェイスの動作をぼやけさせる原因になります。

ここで出力

ここに画像の説明を入力してください

HTH

于 2013-01-18T08:30:42.037 に答える
1

プロローグサーバーは確かにサーバーであり、apacheへのプラグインではないことを忘れないでください。つまり、プロローグに画像を提供させる必要があります。もちろん、Webサーバーに静的ファイルを送信させるのは非常に便利なので、Carloの例では、実際に画像ディレクトリとそれを含めるHTMLの両方を提供しています。

于 2013-01-19T01:13:07.337 に答える