【发布时间】:2019-04-15 07:18:30
【问题描述】:
我尝试在 esp32 上运行我的代码后得到了这个
注意:未定义索引:第 23 行 C:\xampp\htdocs\acc.php 中的 imageFile
我在 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\"\r\n");
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();
我可以使用此代码发送字符串,但我上面的代码不起作用 (cam.getfb() 返回 uint8_t 和 cam.getSize() 返回 size_t)
http.addHeader("Content-type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("word=" + Cword);
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 我尝试更新我的代码
<?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);
?>
【问题讨论】:
-
您不能只将单个表单元素作为有效负载。你首先需要
Content-Type: multipart/form-data。然后嵌入您的图像条目。否则 PHP 将不会填充$_FILES。 // 或者,您当然可以通过php://input访问文字 POST 正文,但不会有任何有效负载元信息 ($_FILES)。 -
请将您的解决方案移至自己的答案,谢谢。
-
您好,是否可以将MJPEG流也从Camera发送到PHP服务器并直接记录在服务器上?
标签: php c++ http arduino esp32