0

特定のパスにあるディレクトリのリストを表示する C のコードを取得したので、これらのディレクトリを HTML 選択で表示する必要があります。

/*
 * listdir.c - Leer archivo de un directorio
 */
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

void err_quit(char *msg);

int main(int argc, char *argv[])
{
    DIR *dir;
    struct dirent *mydirent;
    int i = 1;

    if(argc != 2) {
    //puts("USO: listdir {pathname}");
    //exit(EXIT_FAILURE);
    argv[1]="/home/maudev";
    }

    if((dir = opendir(argv[1])) == NULL)
    {
    err_quit("opendir");
    }
    printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
    printf("<TITLE>CARPETAS</TITLE>\n");
    printf("<H3>CARPETAS</H3>\n");
    printf("<select>\n");
    while((mydirent = readdir(dir)) != NULL)
    {  
        printf("\n<option value='%s'>%s",mydirent->d_name,mydirent->d_name); 
        printf("</option>\n");
    }
    printf("</select>\n");
    closedir(dir);
    exit(EXIT_SUCCESS);
}

void err_quit(char *msg)
{
    perror(msg);
    exit(EXIT_FAILURE);
}

これは私のコードです。デフォルトでは、/home/maudev/ からディレクトリのリストを表示しています。ディレクトリのリストは完全に表示されていますが、これらのフォルダーのいずれかを選択して、含まれているフォルダーを再度表示する必要があります。それを行う方法を知っています、私を助けてください。

4

1 に答える 1

1

HTML 部分でform、選択した値を追加して (POST メソッド経由で) 送信します。

printf("<form action=\"app.cgi\" method=\"post\">\n");
printf("<select>\n");
while((mydirent = readdir(dir)) != NULL)
{  
    printf("<option value=\"%s\">%s</option>\n", mydirent->d_name, mydirent->d_name); 
}
printf("</select>\n");
printf("<input type=\"submit\">\n");
printf("</form>\n");

C 部分ではstdin、post-data 値を読み取って使用します。

len_ = getenv("CONTENT_LENGTH");
len = strtol(len_, NULL, 10);
postdata = malloc(len + 1);
if (!postdata) {exit(EXIT_FAILURE);}
fgets(postdata, len + 1, stdin);
/* work with postdata */
free(postdata);
于 2015-10-03T07:37:58.437 に答える