Si carga con el formato raw 'compress', no tendrá información sobre el tamaño de los datos que se cargan. Pax es correcto en este sentido.
Puede almacenarlo como un encabezado de 4 bytes al comienzo del búfer de compresión, suponiendo que el tamaño del archivo no supere los 4 GB.
algo de código C como ejemplo:
uint8_t *compressBuffer = calloc(bufsize + sizeof (uLongf), 0);
uLongf compressedSize = bufsize;
*((uLongf *)compressBuffer) = filesize;
compress(compressBuffer + sizeof (uLongf), &compressedSize, sourceBuffer, bufsize);
a continuación, enviar el compressBuffer completo del tamaño compressedSize + sizeof (uLongf). Cuando lo reciba en el lado del servidor se puede utilizar el siguiente código para obtener los datos de nuevo:
// data is in compressBuffer, assume you already know compressed size.
uLongf originalSize = *((uLongf *)compressBuffer);
uint8_t *realCompressBuffer = compressBuffer + sizeof (uLongf);
Si usted no confía en que el cliente envíe el tamaño correcto, entonces tendrá que realizar algún tipo de sin comprimir verificación de datos en el tamaño del servidor. La sugerencia de usar descompresión para/dev/null es razonable.
Si está cargando un archivo .zip, contiene un directorio que le dice el tamaño del archivo cuando está descomprimido. Esta información está incorporada en el formato de archivo, una vez más, aunque está sujeta a clientes malintencionados.
Mi suposición de por qué se llama uncompress se debe a un programa llamado pkzip que apareció a principios de los 90. Hubo un programa simular llamado pkunzip. Creo que la "ONU" se quedó. http://en.wikipedia.org/wiki/PKZIP – gradbot
Más investigaciones en wikipedia sugieren que fue una demanda que forzó un cambio de nombre. "Katz cambió los nombres de sus utilidades a PKPAK y PKUNPAK". Más tarde crearon su propia versión llamada zip. "El nombre" zip "(que significa" velocidad ") fue sugerido por el amigo de Katz, Robert Mahoney. Querían dar a entender que su producto sería más rápido que ARC y otros formatos de compresión de la época". De ahí nació zip y descomprimir. – gradbot
Ah-hah. Interesante :) – AriX