ESP32 Try to send image file to php with HTTPClient
I got this after I try to running my code on esp32
Notice: Undefined index: imageFile in C:xampphtdocsacc.php on line 23
My code on esp32
HTTPClient http;
http.begin("http://192.168.43.86/acc.php"); //Specify destination for HTTP request
http.addHeader("Content-Disposition", "form-data; name="imageFile"; filename="picture.jpg"rn");
http.addHeader("Content-type", "image/jpeg");
int httpResponseCode = http.POST(cam.getfb(), cam.getSize());
if (httpResponseCode > 0) {
String response = http.getString(); //Get the response to the request
Serial.println(httpResponseCode); //Print return code
Serial.println(response); //Print request answer
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
I can send String by using this code but my code above don't work
(cam.getfb() return as uint8_t and cam.getSize() return as size_t)
http.addHeader("Content-type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("word=" + Cword);
code in php
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["imageFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(1) {
$check = getimagesize($_FILES["imageFile"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["imageFile"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["imageFile"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
11/13/2018 I try to update my code
<?php
date_default_timezone_set("Asia/Bangkok");
$date = date("Y_m_d_h_i_s");
$directory = "http://192.168.43.192/capture.jpg";
$data = $rawData = file_get_contents("php://input");
$new = "images/".$date.".jpg";
file_put_contents($new, $data);
?>
Solved
WORK.
#include "WiFiClientSecure.h"
#include "Camera_Exp.h"
CAMERA cam;
char ssid = "";
char pass = "";
#define SENSOR 19
#define SERVER ""
#define PORT 443
#define BOUNDARY "--------------------------133747188241686651551404"
#define TIMEOUT 20000
void setup()
{
pinMode(SENSOR,INPUT);
Serial.begin(115200);
Serial.println("rnHello Line Notify");
cam.setFrameSize(CAMERA_FS_QVGA);
cam.setMirror(false);
cam.setVflip(false);
cam.setWhiteBalance(true);
esp_err_t err = cam.init();
if (err != ESP_OK)
{
Serial.println("Camera init failed with error =" + String( err));
return;
}
WiFi.begin(ssid, pass);
unsigned char led_cnt=0;
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while(!digitalRead(SENSOR)){
Serial.println("Undetect");
}
String res;
if(digitalRead(SENSOR))
{
Serial.println("Send Picture");
esp_err_t err;
err = cam.capture();
if (err == ESP_OK)
{
res = sendImage("asdw","A54S89EF5",cam.getfb(),cam.getSize());
Serial.println(res);
}
else
Serial.println("Camera Error");
while(digitalRead(SENSOR));
}
}
//////
String sendImage(String token,String message, uint8_t *data_pic,size_t size_pic)
{
String bodyTxt = body("message",message);
String bodyPic = body("imageFile",message);
String bodyEnd = String("--")+BOUNDARY+String("--rn");
size_t allLen = bodyTxt.length()+bodyPic.length()+size_pic+bodyEnd.length();
String headerTxt = header(token,allLen);
WiFiClientSecure client;
if (!client.connect(SERVER,PORT))
{
return("connection failed");
}
client.print(headerTxt+bodyTxt+bodyPic);
client.write(data_pic,size_pic);
client.print("rn"+bodyEnd);
delay(20);
long tOut = millis() + TIMEOUT;
while(client.connected() && tOut > millis())
{
if (client.available())
{
String serverRes = client.readStringUntil('r');
return(serverRes);
}
}
}
String header(String token,size_t length)
{
String data;
data = F("POST /ln/bot.php HTTP/1.1rn");
data += F("cache-control: no-cachern");
data += F("Content-Type: multipart/form-data; boundary=");
data += BOUNDARY;
data += "rn";
data += F("User-Agent: PostmanRuntime/6.4.1rn");
data += F("Accept: */*rn");
data += F("Host: ");
data += SERVER;
data += F("rn");
data += F("accept-encoding: gzip, deflatern");
data += F("Connection: keep-alivern");
data += F("content-length: ");
data += String(length);
data += "rn";
data += "rn";
return(data);
}
String body(String content , String message)
{
String data;
data = "--";
data += BOUNDARY;
data += F("rn");
if(content=="imageFile")
{
data += F("Content-Disposition: form-data; name="imageFile"; filename="picture.jpg"rn");
data += F("Content-Type: image/jpegrn");
data += F("rn");
}
else
{
data += "Content-Disposition: form-data; name="" + content +""rn";
data += "rn";
data += message;
data += "rn";
}
return(data);
}
and php
<?php
$uploadfile = "";
echo "Uploading ";
echo $_FILES["imageFile"]["name"];
if(strlen(basename($_FILES["imageFile"]["name"])) > 0)
{
$uploadfile = basename($_FILES["imageFile"]["name"]);
if(move_uploaded_file($_FILES["imageFile"]["tmp_name"], $uploadfile))
{
@chmod($uploadfile,0777); echo " Ok! ";
$datum = mktime(date('H')+0, date('i'), date('s'), date('m'), date('d'), date('y'));
if (file_exists("old/".date('Y_m_d', $datum) )) {
print("Directory already exists.n");
} else {
mkdir("old/".date('Y_m_d', $datum));
copy("index1.php","old/".date('Y_m_d', $datum)."/index.php");
print("Directory creating.n");
}
echo "saved ";
copy($uploadfile,"old/".date('Y_m_d', $datum)."/".date('Y.m.d_H-i-s', $datum).".jpg");
}
else echo " Error copying!";
}
echo date('Y.m.d_H:i', $datum);
echo "status = DONE";
?>
php c http arduino esp32
add a comment |
I got this after I try to running my code on esp32
Notice: Undefined index: imageFile in C:xampphtdocsacc.php on line 23
My code on esp32
HTTPClient http;
http.begin("http://192.168.43.86/acc.php"); //Specify destination for HTTP request
http.addHeader("Content-Disposition", "form-data; name="imageFile"; filename="picture.jpg"rn");
http.addHeader("Content-type", "image/jpeg");
int httpResponseCode = http.POST(cam.getfb(), cam.getSize());
if (httpResponseCode > 0) {
String response = http.getString(); //Get the response to the request
Serial.println(httpResponseCode); //Print return code
Serial.println(response); //Print request answer
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
I can send String by using this code but my code above don't work
(cam.getfb() return as uint8_t and cam.getSize() return as size_t)
http.addHeader("Content-type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("word=" + Cword);
code in php
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["imageFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(1) {
$check = getimagesize($_FILES["imageFile"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["imageFile"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["imageFile"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
11/13/2018 I try to update my code
<?php
date_default_timezone_set("Asia/Bangkok");
$date = date("Y_m_d_h_i_s");
$directory = "http://192.168.43.192/capture.jpg";
$data = $rawData = file_get_contents("php://input");
$new = "images/".$date.".jpg";
file_put_contents($new, $data);
?>
Solved
WORK.
#include "WiFiClientSecure.h"
#include "Camera_Exp.h"
CAMERA cam;
char ssid = "";
char pass = "";
#define SENSOR 19
#define SERVER ""
#define PORT 443
#define BOUNDARY "--------------------------133747188241686651551404"
#define TIMEOUT 20000
void setup()
{
pinMode(SENSOR,INPUT);
Serial.begin(115200);
Serial.println("rnHello Line Notify");
cam.setFrameSize(CAMERA_FS_QVGA);
cam.setMirror(false);
cam.setVflip(false);
cam.setWhiteBalance(true);
esp_err_t err = cam.init();
if (err != ESP_OK)
{
Serial.println("Camera init failed with error =" + String( err));
return;
}
WiFi.begin(ssid, pass);
unsigned char led_cnt=0;
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while(!digitalRead(SENSOR)){
Serial.println("Undetect");
}
String res;
if(digitalRead(SENSOR))
{
Serial.println("Send Picture");
esp_err_t err;
err = cam.capture();
if (err == ESP_OK)
{
res = sendImage("asdw","A54S89EF5",cam.getfb(),cam.getSize());
Serial.println(res);
}
else
Serial.println("Camera Error");
while(digitalRead(SENSOR));
}
}
//////
String sendImage(String token,String message, uint8_t *data_pic,size_t size_pic)
{
String bodyTxt = body("message",message);
String bodyPic = body("imageFile",message);
String bodyEnd = String("--")+BOUNDARY+String("--rn");
size_t allLen = bodyTxt.length()+bodyPic.length()+size_pic+bodyEnd.length();
String headerTxt = header(token,allLen);
WiFiClientSecure client;
if (!client.connect(SERVER,PORT))
{
return("connection failed");
}
client.print(headerTxt+bodyTxt+bodyPic);
client.write(data_pic,size_pic);
client.print("rn"+bodyEnd);
delay(20);
long tOut = millis() + TIMEOUT;
while(client.connected() && tOut > millis())
{
if (client.available())
{
String serverRes = client.readStringUntil('r');
return(serverRes);
}
}
}
String header(String token,size_t length)
{
String data;
data = F("POST /ln/bot.php HTTP/1.1rn");
data += F("cache-control: no-cachern");
data += F("Content-Type: multipart/form-data; boundary=");
data += BOUNDARY;
data += "rn";
data += F("User-Agent: PostmanRuntime/6.4.1rn");
data += F("Accept: */*rn");
data += F("Host: ");
data += SERVER;
data += F("rn");
data += F("accept-encoding: gzip, deflatern");
data += F("Connection: keep-alivern");
data += F("content-length: ");
data += String(length);
data += "rn";
data += "rn";
return(data);
}
String body(String content , String message)
{
String data;
data = "--";
data += BOUNDARY;
data += F("rn");
if(content=="imageFile")
{
data += F("Content-Disposition: form-data; name="imageFile"; filename="picture.jpg"rn");
data += F("Content-Type: image/jpegrn");
data += F("rn");
}
else
{
data += "Content-Disposition: form-data; name="" + content +""rn";
data += "rn";
data += message;
data += "rn";
}
return(data);
}
and php
<?php
$uploadfile = "";
echo "Uploading ";
echo $_FILES["imageFile"]["name"];
if(strlen(basename($_FILES["imageFile"]["name"])) > 0)
{
$uploadfile = basename($_FILES["imageFile"]["name"]);
if(move_uploaded_file($_FILES["imageFile"]["tmp_name"], $uploadfile))
{
@chmod($uploadfile,0777); echo " Ok! ";
$datum = mktime(date('H')+0, date('i'), date('s'), date('m'), date('d'), date('y'));
if (file_exists("old/".date('Y_m_d', $datum) )) {
print("Directory already exists.n");
} else {
mkdir("old/".date('Y_m_d', $datum));
copy("index1.php","old/".date('Y_m_d', $datum)."/index.php");
print("Directory creating.n");
}
echo "saved ";
copy($uploadfile,"old/".date('Y_m_d', $datum)."/".date('Y.m.d_H-i-s', $datum).".jpg");
}
else echo " Error copying!";
}
echo date('Y.m.d_H:i', $datum);
echo "status = DONE";
?>
php c http arduino esp32
You can't just put a single form element as payload. You needContent-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate$_FILES
. // Alternatively you could access a literal POST body viaphp://input
of course, but wouldn't have any payload meta info ($_FILES
) then.
– mario
Nov 12 '18 at 14:50
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago
add a comment |
I got this after I try to running my code on esp32
Notice: Undefined index: imageFile in C:xampphtdocsacc.php on line 23
My code on esp32
HTTPClient http;
http.begin("http://192.168.43.86/acc.php"); //Specify destination for HTTP request
http.addHeader("Content-Disposition", "form-data; name="imageFile"; filename="picture.jpg"rn");
http.addHeader("Content-type", "image/jpeg");
int httpResponseCode = http.POST(cam.getfb(), cam.getSize());
if (httpResponseCode > 0) {
String response = http.getString(); //Get the response to the request
Serial.println(httpResponseCode); //Print return code
Serial.println(response); //Print request answer
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
I can send String by using this code but my code above don't work
(cam.getfb() return as uint8_t and cam.getSize() return as size_t)
http.addHeader("Content-type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("word=" + Cword);
code in php
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["imageFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(1) {
$check = getimagesize($_FILES["imageFile"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["imageFile"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["imageFile"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
11/13/2018 I try to update my code
<?php
date_default_timezone_set("Asia/Bangkok");
$date = date("Y_m_d_h_i_s");
$directory = "http://192.168.43.192/capture.jpg";
$data = $rawData = file_get_contents("php://input");
$new = "images/".$date.".jpg";
file_put_contents($new, $data);
?>
Solved
WORK.
#include "WiFiClientSecure.h"
#include "Camera_Exp.h"
CAMERA cam;
char ssid = "";
char pass = "";
#define SENSOR 19
#define SERVER ""
#define PORT 443
#define BOUNDARY "--------------------------133747188241686651551404"
#define TIMEOUT 20000
void setup()
{
pinMode(SENSOR,INPUT);
Serial.begin(115200);
Serial.println("rnHello Line Notify");
cam.setFrameSize(CAMERA_FS_QVGA);
cam.setMirror(false);
cam.setVflip(false);
cam.setWhiteBalance(true);
esp_err_t err = cam.init();
if (err != ESP_OK)
{
Serial.println("Camera init failed with error =" + String( err));
return;
}
WiFi.begin(ssid, pass);
unsigned char led_cnt=0;
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while(!digitalRead(SENSOR)){
Serial.println("Undetect");
}
String res;
if(digitalRead(SENSOR))
{
Serial.println("Send Picture");
esp_err_t err;
err = cam.capture();
if (err == ESP_OK)
{
res = sendImage("asdw","A54S89EF5",cam.getfb(),cam.getSize());
Serial.println(res);
}
else
Serial.println("Camera Error");
while(digitalRead(SENSOR));
}
}
//////
String sendImage(String token,String message, uint8_t *data_pic,size_t size_pic)
{
String bodyTxt = body("message",message);
String bodyPic = body("imageFile",message);
String bodyEnd = String("--")+BOUNDARY+String("--rn");
size_t allLen = bodyTxt.length()+bodyPic.length()+size_pic+bodyEnd.length();
String headerTxt = header(token,allLen);
WiFiClientSecure client;
if (!client.connect(SERVER,PORT))
{
return("connection failed");
}
client.print(headerTxt+bodyTxt+bodyPic);
client.write(data_pic,size_pic);
client.print("rn"+bodyEnd);
delay(20);
long tOut = millis() + TIMEOUT;
while(client.connected() && tOut > millis())
{
if (client.available())
{
String serverRes = client.readStringUntil('r');
return(serverRes);
}
}
}
String header(String token,size_t length)
{
String data;
data = F("POST /ln/bot.php HTTP/1.1rn");
data += F("cache-control: no-cachern");
data += F("Content-Type: multipart/form-data; boundary=");
data += BOUNDARY;
data += "rn";
data += F("User-Agent: PostmanRuntime/6.4.1rn");
data += F("Accept: */*rn");
data += F("Host: ");
data += SERVER;
data += F("rn");
data += F("accept-encoding: gzip, deflatern");
data += F("Connection: keep-alivern");
data += F("content-length: ");
data += String(length);
data += "rn";
data += "rn";
return(data);
}
String body(String content , String message)
{
String data;
data = "--";
data += BOUNDARY;
data += F("rn");
if(content=="imageFile")
{
data += F("Content-Disposition: form-data; name="imageFile"; filename="picture.jpg"rn");
data += F("Content-Type: image/jpegrn");
data += F("rn");
}
else
{
data += "Content-Disposition: form-data; name="" + content +""rn";
data += "rn";
data += message;
data += "rn";
}
return(data);
}
and php
<?php
$uploadfile = "";
echo "Uploading ";
echo $_FILES["imageFile"]["name"];
if(strlen(basename($_FILES["imageFile"]["name"])) > 0)
{
$uploadfile = basename($_FILES["imageFile"]["name"]);
if(move_uploaded_file($_FILES["imageFile"]["tmp_name"], $uploadfile))
{
@chmod($uploadfile,0777); echo " Ok! ";
$datum = mktime(date('H')+0, date('i'), date('s'), date('m'), date('d'), date('y'));
if (file_exists("old/".date('Y_m_d', $datum) )) {
print("Directory already exists.n");
} else {
mkdir("old/".date('Y_m_d', $datum));
copy("index1.php","old/".date('Y_m_d', $datum)."/index.php");
print("Directory creating.n");
}
echo "saved ";
copy($uploadfile,"old/".date('Y_m_d', $datum)."/".date('Y.m.d_H-i-s', $datum).".jpg");
}
else echo " Error copying!";
}
echo date('Y.m.d_H:i', $datum);
echo "status = DONE";
?>
php c http arduino esp32
I got this after I try to running my code on esp32
Notice: Undefined index: imageFile in C:xampphtdocsacc.php on line 23
My code on esp32
HTTPClient http;
http.begin("http://192.168.43.86/acc.php"); //Specify destination for HTTP request
http.addHeader("Content-Disposition", "form-data; name="imageFile"; filename="picture.jpg"rn");
http.addHeader("Content-type", "image/jpeg");
int httpResponseCode = http.POST(cam.getfb(), cam.getSize());
if (httpResponseCode > 0) {
String response = http.getString(); //Get the response to the request
Serial.println(httpResponseCode); //Print return code
Serial.println(response); //Print request answer
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
I can send String by using this code but my code above don't work
(cam.getfb() return as uint8_t and cam.getSize() return as size_t)
http.addHeader("Content-type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("word=" + Cword);
code in php
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["imageFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(1) {
$check = getimagesize($_FILES["imageFile"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["imageFile"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["imageFile"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
11/13/2018 I try to update my code
<?php
date_default_timezone_set("Asia/Bangkok");
$date = date("Y_m_d_h_i_s");
$directory = "http://192.168.43.192/capture.jpg";
$data = $rawData = file_get_contents("php://input");
$new = "images/".$date.".jpg";
file_put_contents($new, $data);
?>
Solved
WORK.
#include "WiFiClientSecure.h"
#include "Camera_Exp.h"
CAMERA cam;
char ssid = "";
char pass = "";
#define SENSOR 19
#define SERVER ""
#define PORT 443
#define BOUNDARY "--------------------------133747188241686651551404"
#define TIMEOUT 20000
void setup()
{
pinMode(SENSOR,INPUT);
Serial.begin(115200);
Serial.println("rnHello Line Notify");
cam.setFrameSize(CAMERA_FS_QVGA);
cam.setMirror(false);
cam.setVflip(false);
cam.setWhiteBalance(true);
esp_err_t err = cam.init();
if (err != ESP_OK)
{
Serial.println("Camera init failed with error =" + String( err));
return;
}
WiFi.begin(ssid, pass);
unsigned char led_cnt=0;
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while(!digitalRead(SENSOR)){
Serial.println("Undetect");
}
String res;
if(digitalRead(SENSOR))
{
Serial.println("Send Picture");
esp_err_t err;
err = cam.capture();
if (err == ESP_OK)
{
res = sendImage("asdw","A54S89EF5",cam.getfb(),cam.getSize());
Serial.println(res);
}
else
Serial.println("Camera Error");
while(digitalRead(SENSOR));
}
}
//////
String sendImage(String token,String message, uint8_t *data_pic,size_t size_pic)
{
String bodyTxt = body("message",message);
String bodyPic = body("imageFile",message);
String bodyEnd = String("--")+BOUNDARY+String("--rn");
size_t allLen = bodyTxt.length()+bodyPic.length()+size_pic+bodyEnd.length();
String headerTxt = header(token,allLen);
WiFiClientSecure client;
if (!client.connect(SERVER,PORT))
{
return("connection failed");
}
client.print(headerTxt+bodyTxt+bodyPic);
client.write(data_pic,size_pic);
client.print("rn"+bodyEnd);
delay(20);
long tOut = millis() + TIMEOUT;
while(client.connected() && tOut > millis())
{
if (client.available())
{
String serverRes = client.readStringUntil('r');
return(serverRes);
}
}
}
String header(String token,size_t length)
{
String data;
data = F("POST /ln/bot.php HTTP/1.1rn");
data += F("cache-control: no-cachern");
data += F("Content-Type: multipart/form-data; boundary=");
data += BOUNDARY;
data += "rn";
data += F("User-Agent: PostmanRuntime/6.4.1rn");
data += F("Accept: */*rn");
data += F("Host: ");
data += SERVER;
data += F("rn");
data += F("accept-encoding: gzip, deflatern");
data += F("Connection: keep-alivern");
data += F("content-length: ");
data += String(length);
data += "rn";
data += "rn";
return(data);
}
String body(String content , String message)
{
String data;
data = "--";
data += BOUNDARY;
data += F("rn");
if(content=="imageFile")
{
data += F("Content-Disposition: form-data; name="imageFile"; filename="picture.jpg"rn");
data += F("Content-Type: image/jpegrn");
data += F("rn");
}
else
{
data += "Content-Disposition: form-data; name="" + content +""rn";
data += "rn";
data += message;
data += "rn";
}
return(data);
}
and php
<?php
$uploadfile = "";
echo "Uploading ";
echo $_FILES["imageFile"]["name"];
if(strlen(basename($_FILES["imageFile"]["name"])) > 0)
{
$uploadfile = basename($_FILES["imageFile"]["name"]);
if(move_uploaded_file($_FILES["imageFile"]["tmp_name"], $uploadfile))
{
@chmod($uploadfile,0777); echo " Ok! ";
$datum = mktime(date('H')+0, date('i'), date('s'), date('m'), date('d'), date('y'));
if (file_exists("old/".date('Y_m_d', $datum) )) {
print("Directory already exists.n");
} else {
mkdir("old/".date('Y_m_d', $datum));
copy("index1.php","old/".date('Y_m_d', $datum)."/index.php");
print("Directory creating.n");
}
echo "saved ";
copy($uploadfile,"old/".date('Y_m_d', $datum)."/".date('Y.m.d_H-i-s', $datum).".jpg");
}
else echo " Error copying!";
}
echo date('Y.m.d_H:i', $datum);
echo "status = DONE";
?>
php c http arduino esp32
php c http arduino esp32
edited 2 days ago
Cœur
17.4k9103145
17.4k9103145
asked Nov 12 '18 at 14:34
Mark Puttipong
62
62
You can't just put a single form element as payload. You needContent-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate$_FILES
. // Alternatively you could access a literal POST body viaphp://input
of course, but wouldn't have any payload meta info ($_FILES
) then.
– mario
Nov 12 '18 at 14:50
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago
add a comment |
You can't just put a single form element as payload. You needContent-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate$_FILES
. // Alternatively you could access a literal POST body viaphp://input
of course, but wouldn't have any payload meta info ($_FILES
) then.
– mario
Nov 12 '18 at 14:50
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago
You can't just put a single form element as payload. You need
Content-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate $_FILES
. // Alternatively you could access a literal POST body via php://input
of course, but wouldn't have any payload meta info ($_FILES
) then.– mario
Nov 12 '18 at 14:50
You can't just put a single form element as payload. You need
Content-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate $_FILES
. // Alternatively you could access a literal POST body via php://input
of course, but wouldn't have any payload meta info ($_FILES
) then.– mario
Nov 12 '18 at 14:50
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53264373%2fesp32-try-to-send-image-file-to-php-with-httpclient%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53264373%2fesp32-try-to-send-image-file-to-php-with-httpclient%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You can't just put a single form element as payload. You need
Content-Type: multipart/form-data
first. Then embed your image entry. Else PHP won't populate$_FILES
. // Alternatively you could access a literal POST body viaphp://input
of course, but wouldn't have any payload meta info ($_FILES
) then.– mario
Nov 12 '18 at 14:50
Please move your solution to an answer of its own, thank you.
– Cœur
2 days ago