[Programación]Subir archivo vía uhttps

"Sebastián D. Criado" sebastian.criado en gmail.com
Lun Ago 30 13:29:16 ART 2010


Estoy tratando de perfeccionar el sistema de actualización de firmware
nightwing vía http.

En la nueva versión se está cambiando el servidor http del busybox por
el uhttpd que es más eficiente.

para hacerlo utilizo ash, no puedo usar ningún otro lenguaje por falta
de espacio (abstenerse de dar soluciones vía php, python o perl por que
no entran :D)

El tema es que que al subir el archivo vía un form de la siguiente manera:

<form name="form1" action="/cgi-bin/fwupgrade.cgi" METHOD="post"
onsubmit="return upgr.ajax()" enctype="multipart/form-data" >
          <input type="file" name="submitfile" />
          <INPUT TYPE="submit" NAME="set" VALUE="Upgrade">

El archivo resultante contiene datos extras que tengo que sacar.

para ello utilizo lo siguiente dentro del cgi fwupgrade.cgi

skip=`sed '1{:a;s/\(name="*submitfile"*\)/\1/;t;n;ba;};/^.$/q' $file|wc -c`
FIRMWARE="/tmp/firmware.img"
dd if=$file bs=1 skip=$((skip)) of=$FIRMWARE 2>/dev/null

Pero el proceso me deja sin memoria. Estoy trabajando en un embebido así
que la memoria es crucial. La misma está en /tmp, mismo lugar a donde va
a parar el archivo original, por lo que el dd al hacer su traspaso, lo
deja sin memoria.

¿Existe otra forma vía http para subir el archivo directamente sin
necesidad de realizar este skip?

Pueden ver los archivos enb la siguiente dirección:
http://my-trac.assembla.com/lugro-mesh/browser/branches/nightwing-backfire/nightwing/www/cgi-bin

-- 
Sebastian.Criado en gmail.com - GPG: 1024D/7D98DF14
37E4 246A F17B 689F 9F2D|counter.li.org: #146768
0578 B1AA 8CDB 7D98 DF14|http://www.lugro.org.ar
http://noalamatricula.wordpress.com/about/ read!
"Si  el Universo fuera un programa estaría hecho
en C, y correría sobre un sistema UNIX" Anónimo.



Más información sobre la lista de distribución Programacion