descarga del servidor web lwIP

0

Estoy usando un STM32F4 con lwIP para alojar un sitio web, y también tengo una tarjeta SD en la que guardo archivos de tipo csv para usar FatFS. ¿Solo me pregunto cómo permitiría a los usuarios descargar archivos directamente desde la tarjeta SD a su computadora desde mi sitio web? Tengo ~ 0 experiencia con sitios web antes de este proyecto, así que perdona mi ignorancia. Gracias!

    
pregunta PacEE

1 respuesta

1

Básicamente, este problema se puede resolver segmentándolo en 3 problemas diferentes.

  1. Construya un servidor web (obviamente tiene uno en ejecución)
  2. Guardar datos en la tarjeta SD (obviamente esto también funciona)
  3. Conecte los dos (esto es lo que veremos ahora)

Un servidor web reacciona a una solicitud GET (o POST) y proporciona la Respuesta adecuada. Para entender esto, tendrá que buscar las especificaciones del protocolo HTTP (o algunos ejemplos). Ya que hay muchos ejemplos, tomaré el primero que encontré al buscar en Google " solicitud HTTP de ejemplo ".

Cualquier navegador (o cualquier otra herramienta que use HTTP) enviará algo muy similar al del ejemplo. Puede utilizar Wireshark en su PC al abrir una página web y verá el tráfico. Su tarea no es conseguir que la línea comience con "GET" y analizarla para saber qué archivo está solicitando realmente el usuario. Esto realmente no necesita ser un archivo en su dispositivo, solo algunos datos binarios. Decir, el usuario solicita lo siguiente

GET /infoa.csv HTTP/1.0

Lo que sabes al analizar esta línea es que la solicitud fue para algo así como infoa.csv. No importa si es un archivo o cualquier otra cosa, siempre que el contenido sea lo que el usuario espera.

La siguiente tarea que deberá realizar es proporcionar la respuesta correcta (solicitud y respuesta es la redacción utilizada en HTTP). Puedes ver un ejemplo en la misma página de arriba. La primera parte es parte del protocolo (Preste atención a la longitud del contenido), el resto puede ser lo que desee. Para hacer que el navegador entienda que no está enviando realmente alguna página HTML, deberá decirle que el tipo de contenido es application / octet-stream. También puede usar text / csv o algo similar, dependiendo de lo que obtenga. Por lo general, especificar octet-stream le dirá al navegador: "Oh, esto es un dato binario aleatorio" y como no sabe qué hacer con él, es probable que el navegador le pida que guarde los datos (se abrirá el cuadro de diálogo Guardar archivo). ). En el Cuerpo de la respuesta, usted proporcionará cualquier información que tenga. Estos datos terminarán siendo guardados en el archivo seleccionado por el usuario. Con respecto a la selección de su tipo MIME (tipo de contenido) es posible que desee buscar la especificación HTTP. También asegúrese de que la longitud del contenido coincida con sus datos reales.

    
respondido por el Tom L.

Lea otras preguntas en las etiquetas