ESP8266 如何保存远程的图片到SPIFFS或SD卡呢-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7764|回复: 6

ESP8266 如何保存远程的图片到SPIFFS或SD卡呢

[复制链接]
发表于 2018-7-30 17:40 | 显示全部楼层 |阅读模式
楼主有个项目,是需要把远程的图片存到esp8266 的文件系统SPIFFS中
比如获取百度的logo     

使用的是arduino的IDE

程序

File myfile;
void setup( ){
    wifi配置等。 就不重复了
    SPIFFS.begin();

void loop( ) {
     HTTPClient http;
   
     http.begin("http://www.baidu.com/img/bd_logo1.png");

     int Code = http.GET();
     if(Code){
          String payload = http.getString();
          Serial.print(payload);
           myfile=SPIFFS("/bd_logo1.png","w");
           myfile.close();
      }
}

但IDE反馈的信息,只显示了文件的类型png  ,文件也没有保存到本地。请问有大神知道错在哪里?
baidu.jpg

发表于 2018-8-2 17:34 | 显示全部楼层
这个我就老熟悉了,debug的语句你自己改下
[mw_shl_code=cpp,true]int downloadFromServer(const char *host, int port, const char *url)
{
  char *filename = strrstr(url, "/");
  if (SPIFFS.exists(filename))
    SPIFFS.remove("fname");

  File file = SPIFFS.open(filename, "w");
  if (!file) {
    debugPrintf("Can't open %s !\r\n", filename);
    return -1;
  }

  debugPrintf("[HTTP]begin %s:%d/%s\n", host, port, url);

  HTTPClient http;
  http.begin(host, port, url);

  debugPrint("[HTTP] GET...\n");
  int httpCode = http.GET();

  debugPrintf("[HTTP] GET... code: %d\n", httpCode);
  if (httpCode != HTTP_CODE_OK)
  {
    debugPrintf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    return -2;
  }

  int fileLen = http.getSize();
  uint8_t buff[128];
  memset(buff, 0, sizeof(buff));

  WiFiClient * stream = http.getStreamPtr();

  debugPrintf("get File len:%d\r\n", fileLen);

  while (http.connected() && (fileLen > 0 || fileLen == -1))
  {
    size_t size = stream->available();
    if (size) {
      int l = stream->readBytes(buff, ((size > sizeof(buff)) ? sizeof(buff) : size));
      file.write(buff, l);
      if (fileLen > 0) {fileLen -= l;}
    }
  }

  file.close();

  debugPrint("[HTTP] connection closed or file end.\n");
  http.end();
  return 1;
}[/mw_shl_code]
发表于 2019-3-9 16:18 | 显示全部楼层
话说真的可以保存到8266里面吗?
发表于 2020-3-9 19:54 | 显示全部楼层
hackxiaoya 发表于 2019-3-9 16:18
话说真的可以保存到8266里面吗?

楼上那位老哥就做过
发表于 2020-3-10 14:02 | 显示全部楼层
跑龙套的保 发表于 2018-8-2 17:34
这个我就老熟悉了,debug的语句你自己改下
[mw_shl_code=cpp,true]int downloadFromServer(const char *hos ...

这个只能保存到FLASH里吗?换成SD卡可不可以?
发表于 2020-3-10 15:56 | 显示全部楼层
a7178636965 发表于 2020-3-10 14:02
这个只能保存到FLASH里吗?换成SD卡可不可以?

可以,SPIFFS换成SD相关的即可
发表于 2021-9-26 17:57 | 显示全部楼层
跑龙套的保 发表于 2018-8-2 17:34
这个我就老熟悉了,debug的语句你自己改下
[mw_shl_code=cpp,true]int downloadFromServer(const char *hos ...

下载其它网页的怎么弄,我一直都没有成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:38 , Processed in 0.146603 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表