невозможно добавить изображение в кодировке base64 в vCard

Я успешно использовал Perl (через Embperl) для создания динамически генерируемой vCard для сотрудников, заполняющей все поля, кроме фотографии. Я не могу заставить это работать, несмотря ни на что. (Код для создания vCard без фото работает нормально.)

Согласно информации, которую я могу найти в Интернете, изображениедолжен быть закодированным в base64 в самой vCard. Спецификация vCard (я использую 3.0) поддерживает изображения, связанные с URL, но мой iPhone не будет ссылаться на них таким образом. Так что это base64 или ничего.

Теперь я знаю, что base64-кодировка работает, потому что если использовать код, чтобы просто показать изображение ...

[-
$photo = "/path/to/directory/".$employeeID.".jpg";
open($file, "<", $photo) || warn "Can't open $photo: $!\n";
#binmode $file;
$jpg = join('', <$file>);
$decoded = MIME::Base64::encode_base64($jpg);
$vcard_content  = $decoded;
-]
<img src="data:image/jpeg;base64,[+ $decoded +]">

... тогда фотография прекрасно отображается в моем браузере. (Кто-то предположил, что мне нужноbinmode $file; там, но удаление, кажется, не имеет никакого значения в выводе.)

Но если я вместо этого включу его в vCard, фотография просто не будет отображаться с остальными контактными данными:

$vcard_content  = "BEGIN:VCARD\r";
$vcard_content .= "VERSION:3.0\r";
$vcard_content .= "N:".$v_last.";".$v_first.";".$v_middle.";;\r";
# etc.
$vcard_content .= "PHOTO;ENCODING=b;TYPE=JPEG:".$decoded."\r";
# etc.
$vcard_content .= "END:VCARD";

Я как-то неправильно форматирую данные vCard?

Ответы на вопрос(1)

Ваш ответ на вопрос