Se stai caricando utilizzando il formato "compresso" raw, non avrai informazioni sulla dimensione dei dati che vengono caricati. La Pax è corretta a questo proposito.
È possibile memorizzarlo come intestazione a 4 byte all'inizio del buffer di compressione, presupponendo che la dimensione del file non superi i 4 GB.
po 'di codice C come esempio:
uint8_t *compressBuffer = calloc(bufsize + sizeof (uLongf), 0);
uLongf compressedSize = bufsize;
*((uLongf *)compressBuffer) = filesize;
compress(compressBuffer + sizeof (uLongf), &compressedSize, sourceBuffer, bufsize);
quindi si invia il compressBuffer completa della dimensione compressedSize + sizeof (uLongf). Quando si riceve sul lato server, è possibile utilizzare il seguente codice per ottenere i dati indietro:
// data is in compressBuffer, assume you already know compressed size.
uLongf originalSize = *((uLongf *)compressBuffer);
uint8_t *realCompressBuffer = compressBuffer + sizeof (uLongf);
Se non vi fidate del client per inviare il formato corretto allora si avrà bisogno di eseguire una sorta di non compresso controllo dei dati sulla dimensione del server. Il suggerimento di usare uncompress su/dev/null è ragionevole.
Se si sta caricando un file .zip, contiene una directory che indica la dimensione del file quando non è compresso. Queste informazioni sono incorporate nel formato di file, anche se questo è soggetto a client dannosi.
La mia ipotesi sul motivo per cui si chiama uncompress è a causa di un programma chiamato pkzip che è apparso nei primi anni '90. C'era un programma simulato chiamato pkunzip. Penso che il "un" sia bloccato. http://en.wikipedia.org/wiki/PKZIP – gradbot
Ulteriori ricerche su wikipedia suggeriscono che si è trattato di una causa che ha costretto a cambiare nome. "Katz ha cambiato i nomi delle sue utilità in PKPAK e PKUNPAK." Più tardi hanno creato la propria versione chiamata zip. "Il nome" zip "(che significa" velocità ") è stato suggerito dall'amico di Katz, Robert Mahoney: volevano insinuare che il loro prodotto fosse più veloce di ARC e altri formati di compressione del tempo." Quindi zip e unzip è nato. – gradbot
Ah-hah. Interessante :) – AriX