Как определить размер файла из вложения в сообщение POP3 - PullRequest
2 голосов
/ 10 октября 2008

Я пишу программу для чтения из почтового ящика POP3 и загрузки сообщения электронной почты в мою систему продажи билетов. Я хотел бы тогда взять вложения и загрузить их. У меня есть вся необходимая информация, кроме размера файла.

Есть ли способ определить размер файла из почтового сообщения? Я беру вложение, декодирую строку в кодировке base64 и разбиваю ее на байтовый массив для хранения в базе данных. Если есть другой способ определить размер файла, я тоже хочу попробовать это.

Я работаю в C # и .NET 3.5.

Спасибо !!!

1 Ответ

4 голосов
/ 10 октября 2008

Правильный ли для вас размер байтового массива, декодированного в base64? Если это так, все, что вам нужно сделать, это рассчитать размер без его декодирования, верно?

Массив байтов размера N будет кодироваться в (N * 4) / 3 байта, всегда округляя . Вам нужно взглянуть на последние несколько символов строки, чтобы понять, сколько нужно удалить для округления. В основном это должно быть что-то вроде:

string x = GetBase64DataFromWherever();
int size = (x.Length *3)/4;
if (x.EndsWith("="))
{
    size--;
}
if (x.EndsWith("=="))
{
    size--; // 1 will already have been removed by the if statement above
}

Это не проверено, но, вероятно, у вас есть хорошие тестовые данные, с которыми вы можете их попробовать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...