У меня есть простой сервер, работающий на ESP8266 с SD-картой, на которой хранятся файлы.На моем ПК я запускаю wampserver и у меня есть страница для загрузки файла на SD-карту на ESP '
<!DOCTYPE html>
<html>
<head>
<title>Handle Files</title>
<h1 style="text-align:center;">
File access page</h1>
</head>
<body>
<form action="http://192.168.1.8/upload" method="post"
enctype="multipart/form-data">
<input type="text" name="ip" value="192.168.1.8">
<input type="file" name="name">
<input class="button" type="submit" value="Upload">
</form>
</body>
</html>
Есть два способа подключения к ESP - в качестве точки доступа и через WiFi,При подключении в качестве точки доступа IP - 192.168.4.1, а при WiFi - 192.168.1.8.
Как использовать IP-адрес в текстовом поле с именем ip в действии формы.
Я предполагаю, что мне понадобится javascript и я использовал его широко, передавая различные данные назад и вперед с сервера на другие страницы, но это ускользает от меня.
Обратите внимание, что сервер отправляет перенаправление на ту же страницу.
Майк.Отредактируйте, это код на стороне сервера для обработки загрузки.
void handleUpload(){
static File in;
HTTPUpload& upload = server.upload();
if(upload.status == UPLOAD_FILE_START){
String filename = upload.filename;
if(!filename.startsWith("/")) filename = "/"+filename;
Serial.print("handleUpload Name: ");
Serial.println(filename);
if(SD.exists(filename))
SD.remove(filename);
in = SD.open(filename,FILE_WRITE); // Open the file for writing
}else if(upload.status == UPLOAD_FILE_WRITE){
if(in)
in.write(upload.buf, upload.currentSize); // Write the received bytes to the file
}else if(upload.status == UPLOAD_FILE_END){
if(in) { // If the file was successfully created
in.close(); // Close the file again
Serial.print("handleUpload Size: ");
Serial.println(upload.totalSize);
server.sendHeader("Location","http://localhost/file.htm"); // Redirect the client back to local
server.send(303);
}else{
server.send(500, "text/plain", "500: couldn't create file");
}
}
}