【问题标题】:How do I display an image in browser using a web server in C using fread?如何使用 fread 在 C 中使用 Web 服务器在浏览器中显示图像?
【发布时间】:2016-04-17 13:07:55
【问题描述】:

我可以使用我的 web server.c 在浏览器中显示 html 和纯文本文件。但是,当我尝试加载图像 jpeg 文件时,它给了我这个错误“图像http://127.0.0.1:8080/index.jpeg”无法显示,因为它包含错误。

内容类型我设置为“image/jpeg”。

这是我的代码:

    FILE *fp;
    char ch;
    unsigned long fileLen;
    unsigned char *buffer;

    fp = fopen(page+1,"rb");
    fseek(fp, 0, SEEK_END);
    fileLen=ftell(fp);
    fseek(fp, 0, SEEK_SET);
    buffer=(char *)malloc(fileLen);
    fread(buffer,fileLen,sizeof(unsigned char),fp);

    fclose(fp);

    write (connection_fd, buffer, strlen(buffer));

这是我设置的图像的标题

"HTTP/1.1 200 正常\r\n" "内容类型:图像/jpeg\r\n" “连接:关闭\r\n” "\r\n";

请多多指教。谢谢你:)

【问题讨论】:

  • page+1 is = index.jpeg

标签: c image http webserver fread


【解决方案1】:

您的write() 声明是错误的。 strlen(buffer) 返回的值将是 JPEG 文件中第一个零字节的位置。尝试改用fileLen

以下是我想到的其他一些事情:

  1. fread() 调用中,第二个和第三个参数实际上应该相反。由于sizeof(unsigned char) 的定义是1,所以我会改用fread(buffer,1,fileLen,fp);

  2. 你真的应该检查fopen()等返回的值。

  3. 您对page+1 的使用表明您将未经检查的HTTP 查询字符串参数直接放入文件系统调用中。显然你不想这样做:-)

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2018-01-22
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2012-02-22
    相关资源
    最近更新 更多