使用prolog

时间:2017-03-20 15:41:41

标签: html prolog

我创建了一个HTML表单来浏览csv fil。 in' analyse.prolog'我需要一个prolog代码来获取文件名以将其作为loadCSV函数的输入(例如我应该得到:" file.csv"我将调用loadCsv(" file.csv&#34) ;);你能帮助我吗? 这是我的表单代码:

<form name='F' 
      action='analyse.prolog' 
      method='POST' 
      enctype='multipart/form-data'>
  <label>Fichier : </label>
  <input type="file" 
         name="fname" 
         style="color:rgb(51,153,255); 
                border-color:rgb(100,153,0); 
                border-style:solid;" 
         size="200px" >
  <br>
  <br>
  <input type="submit" class="button" value="Analyser" />
</form>

1 个答案:

答案 0 :(得分:1)

使用SWI-Prolog Web基础结构,通过以下步骤轻松获取文件名:

定义HTTP处理程序

在您的情况下,您可以使用例如:

:- http_handler(root('analyse.prolog'), handle_upload, []).

在提交表单时,以HTTP请求作为参数调用handle_upload/1

读取数据并传递

handle_upload/1可以按如下方式开始:

handle_upload(Request) :-
        http_read_data(Request, Data, [on_filename(file_upload)]),
        ...

解析此表单时自动调用file_upload/N+3,如下所示:

file_upload(Stream, name_content(Name,Content), Options) :-
        option(filename(Name), Options),
        read_string(Stream, _, Content).

请注意在这种情况下自动添加的其他参数。特别是,文件名在传递的Options中可用。我们读取了文件内容,并传回了name_content/2形式的结构。

使用文件名

此构造使文件名在handle_upload/1的延续中可用。因此,定义可以继续如下:

handle_upload(Request) :-
        http_read_data(Request, Data, [on_filename(file_upload)]),
        option(fname(name_content(Name,Content)), Data),
        ...

此处,fname是您为此输入字段指定的 HTML名称name_content/2包含已传递的文件名和文件内容。

FileUpload.txt提供了一个更完整的示例。