国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

關于用stm32和ESP8266通過POST請求上傳圖片到貝殼物聯(lián)的接口

作者:wintercoming | 更新時間:2018-10-04 | 瀏覽量:43503

已經(jīng)設置ESP8266為STA模式,之后先連接路由器,并設置為單鏈接模式;

然后連接到貝殼物聯(lián)服務器:

 #define User_ESP8266_TCPServer_IP   "www.placeboworld.cn"   //要連接的服務器的IP

#define User_ESP8266_TCPServer_PORT   "8181"   //要連接的服務器的端口

 

ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0);

 

//ESP8266模塊連接外部服務器

//enumE:網(wǎng)絡協(xié)議

//ip:服務器IP字符串

//ComNum:服務器端口字符串

//id:模塊連接服務器的ID

//返回1:連接成功 0:連接失敗

bool ESP8266_Link_Server(ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id)

{

char cStr [100] = { 0 }, cCmd [120];

  switch (  enumE )

  {

case enumTCP:

sprintf ( cStr, "\"%s\",\"%s\",%s", "TCP", ip, ComNum );

break;

case enumUDP:

sprintf ( cStr, "\"%s\",\"%s\",%s", "UDP", ip, ComNum );

break;

default:

break;

  }

  if ( id < 5 )

sprintf ( cCmd, "AT+CIPSTART=%d,%s", id, cStr);

 else

sprintf ( cCmd, "AT+CIPSTART=%s", cStr );

return ESP8266_Send_AT_Cmd ( cCmd, "OK", "ALREAY CONNECT", 4000 );

}

 然后設置一下透傳模式;

接下來就是進行POST請求了:打開sd卡中已有的jpg文件,讀取文件數(shù)據(jù)并通過POST請求上傳

/*上傳數(shù)據(jù)到圖片接口*/

void update_img(char *did, char *inputid, char *APIKEY)

{

char name[40];

unsigned long int file_byte;

u8 buffer[1024];

UINT  br;

//打開jpg圖片

sprintf(name,"0:photo_%d.jpg",name_count);

jpgres = f_open( &jpgfsrc , (char*)name,  FA_OPEN_EXISTING | FA_READ);

//圖片打開成功

if(jpgres==FR_OK)

{

//獲取圖片大小

file_byte=jpgfsrc.fsize;

printf("\r\nsize:%lu\r\n",file_byte);

//POST請求發(fā)送

ESP8266_USART("POST http://www.placeboworld.cn/pubapi/uploadImg/did/%s/inputid/%s HTTP/1.1\r\n", did, inputid);

ESP8266_USART("Host: www.placeboworld.cn\r\n");

ESP8266_USART("Connection: keep-alive\r\n");

ESP8266_USART("API-KEY: %s\r\n", APIKEY);

ESP8266_USART("Content-Length: %lu\r\n",file_byte);

ESP8266_USART("Content-Type: multipart/form-data; boundary=3bf1dc3ce677345d7151048c92ca3cac\r\n");

ESP8266_USART("\r\n");

ESP8266_USART("--3bf1dc3ce677345d7151048c92ca3cac\r\n");

ESP8266_USART("Content-Disposition: form-data; name=\"file\"; filename=\"ex1.jpg\"\r\n");

ESP8266_USART("\r\n");

while(1)

{

//讀取jpg文件信息

jpgres = f_read(&jpgfsrc, buffer, sizeof(buffer), &br);

USART_puts(USART2, buffer);

//判斷手否讀取完結(jié),若完結(jié)跳出循環(huán) 

if (jpgres || br < sizeof(buffer))

{

break;  

}

}

ESP8266_USART("\r\n");

ESP8266_USART("--3bf1dc3ce677345d7151048c92ca3cac--\r\n");

}

f_close(&jpgfsrc); //關閉文件

}

連接服務器已經(jīng)成功了,這里的POST請求也是按格式寫的,請求的URL(http://www.placeboworld.cn/pubapi/uploadImg/did//inputid/)也沒有問題??墒菆D片接口并不能接收到數(shù)據(jù) ,這是為什么?是因為一開始連接服務器的IP或端口不對,還是其他的原因?

求解答


評論:共3條

貝殼物聯(lián) 評論于:2018-10-07 09:30:12
貝殼上傳圖片的接口是https端口443,8181是tcp連接端口,另外https是加密的,操作起來比較麻煩。如果不加密的http端口8080或許可行,但是貝殼物聯(lián)沒有提供這個。
fengguihao 回復于:2019-03-06 21:05:44
回復 @貝殼物聯(lián):請問如何在計算機使用Python測試圖片接口,是否有相關代碼例程,我想在計算機測試成功后一直到樹莓派上。
返回頂部