温布利小王子 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 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗