0

我正在处理服务器/客户端分配。当我转到 localhost:8080/某个地址时,我的服务器应该向下传递给客户端 HTML、.txt、.jpg、.gif 和 .xbm 文件以在 Web 浏览器上打开……我的 HTML 和 .txt 文件打开方式如下魅力!但是 .jpg 和 .gif 根本不会显示。服务器确实找到了文件,但是在读取或显示 .jpg 或 .gif 时它无法显示,因为它包含错误,但是当我在常规浏览器中打开它时效果很好。我们的说明是“当您打开图像文件进行读取时,请确保以二进制模式打开它,因为图像文件包含二进制数据。” 所以我就这样做了,但由于图像没有显示,我想知道我是否做得正确。这是我用 c 编写的代码,用于读取我用于 html、txt 和图像格式的文件。

void file_read(char *filename){
    //filename is actually the path
size_in = strlen(filename);
    //this is test display to see how the path was being read and since getting a 
    //from a web browser contains an extra character '/' in the beginning we need to 
    //to ignore it, 
printf("printf in file_read function %d\n", size_in);
wtg = filename + 1;
printf("printf in file_read function %s\n", wtg);

//file open and transfer in binary 'rb'
    fp= fopen (wtg, "rb");
    if (fp == NULL){
        printf("Could not open the file\n");
        exit(0);
    }
    fseek(fp , 0, SEEK_END);
    len = ftell (fp);
    rewind (fp);
    //allocate memory to contain the whole file:
    linehtml = calloc(1, len + 1);
    if (linehtml == NULL){fputs("Memory Error", stderr); 
    exit(2);}
    //copy the file into the buffer:
    if(1!=fread(linehtml, len, 1, fp)){
        fputs("entire read fails",stderr),exit(1);
    }
    fclose(fp);
    /*if (result != len) {
        printf("file lenght is %d\n\n", len);
        fputs ("Reading Error",stderr);
        exit(3);
    };*/
}

有什么不对?缓冲区不够长吗?有任何想法吗?

4

0 回答 0