乐鑫技术交流
直播中

王萍

8年用户 1376经验值
私信 关注
[问答]

server.streamFile无法正常工作是为什么?

我正在使用 Adafruit HUZZAH ESP8266 开发网络摄像头。我正在使用 TTL 串行 JPEG 相机拍摄图像。网页最初发送带有标签的响应,然后触发 handle_picture 函数。这应该只是将一个 jpeg 文件发送到浏览器。  
我遇到的问题似乎与 server.streamFile 函数有关。在下面的代码片段中,该函数似乎没有读取和发送整个文件。  
代码:全选void handle_picture() {
  byte clientBuf[64];
  char filename[13];
  strcpy(filename, "IMAGE01.JPG");
  filename[5] = '0' + FileNum / 10;
  filename[6] = '0' + FileNum % 10;
  int32_t time = millis();
  // strcpy(filename, "/test1.jpg");  // DEBUG only
  f = SPIFFS.open(filename, "r");
  if (!f) {
    Serial.print("file open failed: ");
    Serial.println(filename);
  } else {
    Serial.print("file opened: ");
    Serial.println(filename);
  }
  int filesize = f.size();
  Serial.print("File size ");
  Serial.println(filesize); //For debugging only
  String WebString = "";
  WebString += "HTTP/1.1 200 OKrn";
  WebString += "Content-Type: image/jpegrn";
  WebString += "Content-Length: " + String(filesize) + "rn";
  WebString += "rn";
  server.sendContent(WebString);
  Serial.println (WebString);
  ESP.wdtFeed();
  count = 0;
  size_t sent = server.streamFile(f,"image/jpeg");

  Serial.print(sent);
  Serial.println(" Bytes sent!");
  f.close();
  time = millis() - time;
  Serial.print(time); Serial.println(" ms elapsed");
}// END handle_picture



如您所见,输出显示了一个 45012 字节的文件,但是 streamFile 只发送了 4380 字节!
代码:全选Image size: 640x480
HTTP server started
Picture taken!
File number = 6
Filename: IMAGE06.JPG
Storing 45012 byte image.
...........................................*
File stored!
24623 ms elapsed
170853 mS Elasped for snapshot.
file opened: IMAGE06.JPG
File size 45012
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 45012


4380 Bytes sent!
43 ms elapsed


更多回帖

发帖
×
20
完善资料,
赚取积分