如何解决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 举报,一经查实,本站将立刻删除。