Quiero usar una página web html para buscar en su servidor de origen una subcarpeta específica (/home/pi/Pictures) y luego contar la cantidad de subcarpetas allí e imprimirla en la página cuando se ve de forma remota en la LAN. El servidor de origen es una Raspberry Pi, el software tiene .net6 y está escrito principalmente en c#, con algo de js, css.
He encontrado muchas respuestas antiguas (y contradictorias) a partes del todo, entonces, ¿qué necesito para hacer esto en junio de 2022, en los navegadores actuales?
Esto parece dos temas en uno, uno de ellos JS y el otro C#, ya que sus archivos están en un servidor y su código de servidor está en C#. El conteo real de directorios en C# es simple, simplemente usando una sintaxis como string[] folders = Directory.GetDirectories("path"); y luego return folders.Length; . Por supuesto, desea asegurarse de que el usuario no pueda proporcionar la ruta, ya que es un riesgo de seguridad.
Luego, necesita código para una llamada a la API en el extremo de C#, como una Task<IActionResult<int>> GetCountOfFolders() { ... } y debe devolver el número.
Al final de JavaScript, probablemente escribiría let result = await fetch("/your/url/here) y luego algo como let count = await result.JSON(); .
Y finalmente, asumiendo que solo está mostrando esto en una página web, podría hacer algo como let display = document.getElementById("your-DOM-element-ID"); y finalmente display.innerText = count; o alguna otra configuración de valor.
Asumo aquí que se puede acceder a Raspberry Pi con la clase de Directory de tipo Windows de System.IO , y algunas otras cosas. También estoy omitiendo muchos detalles sobre dónde colocaría esa llamada a la API de C# (en un controlador, pero eso es solo el comienzo) y otras cosas. Y, por supuesto, si desea cargar una página completa que obtenga el número, no usaría JavaScript en absoluto, solo haría que la llamada a la API devuelva una página HTML con el número ya incorporado, y use un navegador solo para solicitar esa página desde la URL de su API, momento en el cual ya no es realmente una "API".