Arduino WebServer.streamFile 怪异

问题描述

把我难住了... 使用带有 SD 的 NodeMCU ... 经典的 WebServer 设置通过 HTTP 工作一个简单的文件服务器:这是 SendFile 处理程序:

  void handleFileRequest()
{
  
  Serial.println("handleFileRequest");  
  File32 file = sd.open(fileName,O_READ);
      if ( file == 0 )  // opening the file with return code of 0 is an error in SDFile.open
      { 
        handleError(404,"File Not Found");
        return; 
      }
      
      int fsizedisk = file.size();
      if (file.isDirectory()|| fsizedisk <=0)
      {
         handleError(500,"cannot send folder only file");
         return; 
      }
      
      Serial.print("file size: "); Serial.println(fsizedisk);
      
      ledState = LOW;
      digitalWrite(LED_BUILTIN,ledState);
    
      unsigned long timeBegin = micros();
       
      server.sendHeader("Content-Length",(String)(fsizedisk));
      server.sendHeader("Content-disposition","attachment; filename=\"" + fileName + "\"");
      server.sendHeader("Cache-Control","max-age=0,no-store"); // do not allow cache
      server.sendHeader("Connection","close");
      size_t sent = server.streamFile(file,"application/octet-stream");
      unsigned long timeEnd = micros();
      unsigned long duration = timeEnd - timeBegin;
      double averageDuration = (double)duration / 1000.0;
      Serial.println("Duration: "); 
      Serial.print(averageDuration); Serial.println("s");
      server.client().stop();
      ledState = HIGH;
      digitalWrite(LED_BUILTIN,ledState); 
      file.close();
      delay(200);
      Serial.print("Data Sent: ");
      Serial.println(sent);
      delay(200);
}
And here is the Serial Terminal log...
Connected to hc406-ng
IP address: 192.168.0.162
MDNS responder started @GrnAcres-Hi
SdFat version: 2.0.6
Test with GrnAcres-Hi.local/download?file=test.jpg
Or with 192.168.0.162/download?file=test.jpg
HTTP server started
 
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.78s
Data Sent: 7
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.78s
Data Sent: 7
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.76s
Data Sent: 7
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.73s
Data Sent: 7
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.78s
Data Sent: 7
handleFileRequest
Request for: Hello.txt
file size: 13
Duration: 
1002.83s
Data Sent: 7

无论我使用哪个文件...(test.jpg 是 15K)...我传输了 50% 的文件,然后再次调用处理程序...一次又一次......一次又一次?

>

请注意:以秒为单位的持续时间是关闭的...这只是一个调试值,每个循环只需要 1 秒。我只是想要每个连续调用间的比率

任何评论都会有很大帮助......提前感谢大家。 干杯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)