温布利小王子 2023-01-25 17:48 采纳率: 100%
浏览 43
已结题

Linux下服务器发送图片时浏览器不能正确显示

我用Linux的open函数和sendfile函数发送文件给浏览器,html文件可以正常显示,但是图片文件发送过去却不能显示。
下面是我使用函数的代码

int Server::openFile(const char* filename)
{
    filename = parser.questionMark(filename);
    int fd = open(filename, O_RDONLY);
    assert(fd >= 0);

    fstat(fd, &st);
    return fd;
}

void Server::sendResponse(const int& cfd, const int& fd, const int& status, const char* descr, const char* type)
{
    char buf[4096]{ '0' };

    sprintf(buf, "http/1.1 %d %s\r\n", status, descr);
    sprintf(buf + strlen(buf), "content-type: %s\r\n", type);
    sprintf(buf + strlen(buf), "content-length: %d\r\n", st.st_size);

    send(cfd, buf, strlen(buf), 0);
    std::cout << "num:" << sendfile(cfd, fd, NULL, st.st_size);
    std::cout << "sendResponse" << std::endl;
}

这是浏览器的请求和我的服务器发送的响应

img

浏览器显示效果如下所示

img

  • 写回答

1条回答 默认 最新

  • Halifax ‎ 2023-01-25 18:54
    关注

    文件损坏,开头没有发现 jpeg

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?