Perché dimensione degli allegati data dalla interfaccia di programmazione di Outlook è sempre sbagliato?

StackOverflow https://stackoverflow.com/questions/3078622

  •  28-09-2019
  •  | 
  •  

Domanda

Il tentativo di utilizzare Outlook Interop in C #, ho notato una cosa curiosa.

Confrontando la dimensione reale di un file salvato e una dimensione data dalla prospettiva, ho notato che il vero, file salvato è sempre più piccolo del previsto da Attachment.Size. I file salvati sembrano essere validi e non troncato.

I risultati dei campioni http://www.freeimagehosting.net/uploads /224d342eba.png

Quindi, cosa c'è di sbagliato con esso? C'è un bug in Attachment.Size? O forse ci si aspetta di dare qualcosa di diverso rispetto alla dimensione di un allegato?

ho pensato che converte CR a CRLF, compresi i file binari, che possono spiegare l'overhead, ma alcuni file allegati sono in formato testo crudo con CRLF, quindi questa ipotesi è sbagliata.


prima modifica:

Non è la codifica Base64, perché codifica Base64 potrebbe essere:

  • rapporto di 4/3. Nel mio caso, ho un rapporto che non è così lontano da 1.0.
  • proporzionale. Non è il caso qui:. Un file di 1,9 MB ha un sovraccarico di 181 byte, mentre un file di 27 KB ha un sovraccarico di 3 KB

Ora, guardando in alto quasi a caso in una gamma di 89 a 3658 byte, sono d'accordo che potrebbe essere alcune intestazioni strane.


Seconda modifica:

Ho provato questo su un insieme più ampio di file. Quello che ho notato è che la differenza tra la dimensione reale del file e la dimensione data dal Outlook:

  • è sempre zero per un allegato con estensione msg. Ma l'attaccamento msg è un caso molto speciale e hanno un comportamento molto strano.
  • influenzato sia da estensione del file e la lunghezza del nome del file.
  • Per la stessa estensione del file, è, nella maggior parte dei casi, ma non sempre , più grande quando la lunghezza del nome del file è più grande.

Ecco un esempio:

alt text http://www.freeimagehosting.net/ uploads / a767d3cacf.png

IMHO, Outlook qualcosa con il nome del file, una sorta di codifica molto strano, forse una generazione di un codice identificativo unico in base a nome del file . Ciò significa che:

  • quando il file è più grande, l'identificatore univoco è più grande anche.
  • quando collisione accade, qualcosa accade al identificatore univoco, il che rende molto, molto più grande: fila 18 ha lo stesso nome del file di fila 11, ma il file non è lo stesso; d'altra parte, le righe 12, 13 e 14 hanno lo stesso file.
È stato utile?

Soluzione

Non sono sicuro, ma mi piacerebbe pensare che potrebbe essere intestazioni MIME e / o codifica in testa. Per ulteriori informazioni, un'occhiata a questo articolo Wiki su Base64 e cercare la parola in testa.

Edit: Mi dispiace, ma non era molto chiaro, volevo dire l'articolo Base64 proprio come un esempio di che ci potrebbe essere generali legati codifica, non è che in realtà era Base64 in quanto, come detto da altri, Base64 in testa sarebbe probabilmente essere molto più grande di quelle differenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top