Hace poco tuve que probar como se comportan nuestros Mongrels si subimos varios archivos grandes a la misma vez. En vez de abrir muchas pestañas en Firefox busque una solución mas sencilla. Y la encontré con curl. Hoy voy a explicar como funciona.
El primer obstaculo era la autentificación. curl sabe leer un archivo con cookies en formato txt, pero Firefox 3 usa sqlite para guardar los cookies, así que simplemente copié el valor del cookie en las preferencias de Firefox. El parámetro para definir cookies con curl es -b "<nombre>=<valor>".
Luego hay que llenar los campos del formulario con el que vamos a subir el archivo. Esto se hace con el parámetro -F "<nombre del elemento del formulario>=<valor>". Si para el valor ponemos @<ruta al archivo> curl va a subir el archivo.
Por ultimo quería ver la velocidad de subida de cada archivo. curl por defecto muestra el resultado del servidor en la consola. Para ver las estadísticas desviamos el resultado a un archivo con una simple redirección. Así curl automáticamente muestra el progreso y la velocidad de la subida en la consola. El comando entero es:
curl -v -b "auth_token=c963f81e12345678123456781234567812345678"\
-F filesupload[file]=@/home/henning/Desktop/big_file.jpg\
http://servidor.es/files_upload/new > /dev/null
Con un simple bucle en bash puedes subir tantos archivos como quieras a la misma vez. Como siempre hay muchas formas diferentes de conseguir lo mismo. Pero esta me parece una de las mas rápidas y sencillas.
