Почему размер вложения, данный интерфейсом программирования Outlook, всегда ошибается?

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

  •  28-09-2019
  •  | 
  •  

Вопрос

Пытаюсь использовать Outlook Interop в C #, я заметил любопытную вещь.

Сравнивая реальный размер сохраненного файла и размера, данного Outlook, я замечаю, что реальный, сохраненный файл всегда меньше, чем ожидается от Attachment.Size. Отказ Сохраненные файлы кажутся действительными и не усечены.

Пример результатов http://www.freeimagehosting.net/uploads/224d342eba.png.png.

Итак, что с этим не так? Есть ли ошибка в Attachment.Size

Я думал, что это преобразует CR в CRLF, включая двоичные файлы, которые могут объяснить накладные расходы, но некоторые прикрепленные файлы находятся в формате необработанного текста с CRLF, поэтому эта гипотеза неверна.


Первое редактирование:

Это не базовое кодирование64, потому что кодировка Base64 будет:

  • 4/3 соотношение. В моем случае у меня есть соотношение, которое не так далеко от 1,0.
  • Пропорционально. Здесь не так: файл 1,9 МБ имеет накладные расходы из 181 байта, в то время как файл 27 Kb имеет накладные расходы по 3 КБ.

Теперь, глядя на почти случайные накладные расходы в диапазоне от 89 до 3658 байтов, я согласился бы, что это может быть некоторые странные заголовки.


Второе редактирование:

Я проверил это на больший набор файлов. Что я замечаю, что разница между реальным размером файлов и размером, заданным Outlook:

  • Всегда нулю для крепления .msg. Но вложение .msg - очень особенный случай и имеет очень странное поведение.
  • Является под влиянием как расширение файла, так и длина имени файла.
  • Для того же расширения файла, в большинстве случаев, но не всегда, больший, когда длина имени файла больше.

Вот пример:

Alt Text http://www.freeimagehosting.net/uploads/a767d3cacf.png.

ИМХО, Outlook делает что-нибудь С именем файла, какой-то очень странный кодировщик, может быть, генерация уникального идентификатора На основании имени файла. Отказ Это значит, что:

  • Когда файл больше, уникальный идентификатор тоже больше.
  • Когда происходит столкновение, что-то происходит с уникальным идентификатором, что делает его много, намного больше: ROW 18 имеет то же имя файла, как строка 11, но файл не то же самое; С другой стороны, строки 12, 13 и 14 имеют один и тот же файл.
Это было полезно?

Решение

Я не уверен, но я предполагаю, что это может быть заголовки MIME и / или кодирующие накладные расходы. Для получения дополнительной информации посмотрите на это Вики Статья о Base64 и искать слово накладные расходы.

Редактировать: Извините, мне было не очень ясно, я имел в виду статью BASE64, как пример того, что может быть накладные расходы, связанные с кодировкой, не то, что она была фактически Base64 с тех пор, как упомянуто другими, Base64 накладной, вероятно, будет намного больше чем те различия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top