ESP32 WLAN Hotspot um Dateien zum/vom PC hin/her zusenden

Hallo Zusammen,

Ich betreibe auf dem ESP32 einen kleinen Webserver, mit dem ich typischerweise Textdaten in HTML Seiten ausgebe, die dann auf dem PC angezeigt werden können. Das funktioniert.

Ich würde, wenn das möglich ist, gerne auf einer zusätzlichen eigenen HTML Seite die der ESP32 zur Verfügung stellt einen Button haben, wo am PC ein Directory ausgewählt werden kann und dann kleine Dateien direkt vom PC auf das Datenlaufwerk des ESP32 hin übertragen und auch umgekehrt Daten aus dem ESP32 Datenlaufwerk zum Beispiel per Textfeld auswählen und dann über einen weiteren Butten direkt auf ein Laufwerk am PC kopieren.

Also nicht einzelne Daten streamen oder Text in eine HTML Seite einfügen und dann am PC per Programm herausziehen und weiter verarbeiten, sondern wirklich ESP32 /DateiName.bin via HTML Seite die vom ESP32 selbst erzeugt und verwaltet wird auf PC Laufwerk://Direktory.../DateiName.bin übertragen. Und das in beide Richtungen.

Habe bisher keine Ideen gefunden, wie so etwas auf einem ESP32 unter Adruino IDE programmiert werden könnte.

Vielleicht hat von Euch schon mal Jemand so ein Problem in diesem Umfeld gelöst.
Grüße

Hallo,
Beispiele dazu findest du auf der Seite von fips.

Hallo,

Ich habe mich mal auf dem Link von Dir umgesehen und auch versucht einige ino zu probieren, aber ich komme damit nicht so richtig zu recht.
z.B: Esp32 Webserver ... Wird als "HauptTAB" bezeichnet.

Wie würdest Du konkret vorgehen um mein obiges Problem zu lösen.
Also welche Reihenfolge der TABs die dort angeboten werden wie in die IDE laden. (bei der IDE von Adruino kommt es auf die genaue Reihenfolge an, damit sich das Teil überhaupt kompilieren lässt, deswegen die Frage)

Grüße

wenn du die Resource am ESP zur Verfügung stellst, dann setzt du den Content Type einfach auf

Content-Type: text/plain

Du kannst auch dem Browser explizit im http header mitteilen, dass es sich um ein Download handelt,
Content-Disposition: attachment; filename=DateiName.bin

Ich mache mal ein Beispiel für eine statische HTML Datei die ich via ESP32 erzeuge und die am PC angezeigt via WLAN Hotspot angezeigt wird.

<!DOCTYPE html>
<html lang="de">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0,">
		<style type="text/css">
		<!-- DIV  -->
			DIV.container 
			{ 
				min-height: 10em; 
				display: table-cell; 
				vertical-align: middle; 
			}
			.button 
			{
				height:35px; 
				width:90px; 
				font-size:16px;
			}
			body 
			{
				background-color: #f3e9cc;
			}
		</style>
		<title>Startpage</title>
	</head>
	
	
	<body>
		<h2 align="middle">ESP32 Serial Solarmodul StepDown Converter</h2>
		
		<!-- Client Requests an den Webserver -->		
		<table border="2" bgcolor="white" width="900" cellpadding="5">
			<caption><p></p><h3>Links zu Unterseiten:</h3><p></p></caption>
			<tbody>
				<tr>
					<th>
						<br><a href="/Serial.html">Serial</a><br>
						<br><a href="/FileBearbeitung.html">File bearbeiten</a><br>
                        <br><a href="/Chart.html">Messdaten/Chart anzeigen</a><br>
						<br><a href="/Impressum.html">Impressum</a><br>
						<br>
					</th>
				</tr>
			</tbody>
		</table>
	</body>
</html>

Und wo im Header sollte ich dann wie die von dir angegebene Zeile

Content-Disposition: attachment; filename=DateiName.bin

einfügen, damit im Browser am PC dann tatsächlich im Browser ein Download/Upload Button angezeigt wird und die Datei vom ESP32 zum PC und retour direkt übertragen werden kann?

Bitte direkt in die obige HTML Datei an der Stelle genauso einfügen, wie sie dann vom ESP32 gesendet werden soll.

das sind HTTP header fields! (!!!)

Kein HTML.

  server.addHeader("Content-Disposition", "attachment; filename=DateiName.bin");

den Content-Type gibst einfach im .send() mit

server.send(200, "text/plain", message);

der Button auf der HTML Seite muss zu einer Resource führen die eben den Download zur Verfügung stellen. Im einfachsten fall ein ganz simpler a href

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.