我用的开发板是esp32-cam,用的arduion编程,我是想把拍到的照片上传到一个网站,这个网站要求上传图片要编码成base64数据,通过json格式化请求体,但是我图片的数据编码一直出错。
这个是我程序
static esp_err_t take_send_photo()
{
//初始化相机并拍照
Serial.println("Taking picture...");
camera_fb_t * fb = NULL;
fb = esp_camera_fb_get();//拍照数据流
if (!fb) {
Serial.println("Camera capture failed");
return ESP_FAIL;
}
/**********************************************json格式传输**************************************/
memset(data_json,'\0',strlen(data_json));//将数组清空
strcat(data_json,"{");
strcat(data_json,"\"image\":\"");
strcat(data_json,base64::encode((uint8_t *)fb->buf,fb->len).c_str());//将照片数据进行base64编码
strcat(data_json,"\"image_type\": \"BASE64\"");
strcat(data_json,"\"group_id_list\": \"test01\"");
strcat(data_json,"}");
Serial.println(data_json);
HTTPClient http; //定义服务器对象
//设置请求url
http.begin(post_url); //连接服务器
//设置请求头部信息
http.addHeader("Content-Type", "application/json"); //服务器上传选择格式选择为application/json
//发起请求,并获取状态码
int httpResponseCode = http.POST(data_json);//返回值为状态码 ,此时图片数据往服务器传输
if(httpResponseCode>0){
//获取post请求后的服务器响应信息,json格式
String response = http.getString(); //获取对请求的响应 String为字符串格式 getString()获取响应数据
Serial.print("Response Msg:");
Serial.println(response); // 打印服务器返回的信息
这个是串口返回的数据
|