使用在Windows和iOS -C#上使用的照片创建VCARD



我目前正在为客户编写一个程序,他们可以使用.NET MVC作为VCARD导出信息。

当我在Windows上下载VCARD时,我已经正确地完成了所有内容,但是当我下载iOS设备的VCARD时,我所拥有的代码似乎并没有附加图像。

这是我写过的第一个vcard,所以我不太熟悉的东西。我使用v2.1是我可以在Windows计算机上显示的映像的唯一版本。我在这里对任何建议开放,以及有关图像为什么不在iOS上进行的任何信息。

        // Building the V-Card
        var vCard = new StringBuilder();
        vCard.Append("BEGIN:VCARD");
        vCard.AppendLine();
        vCard.Append("VERSION:2.1");
        vCard.AppendLine();
        // Name
        vCard.Append($"N:  {model.sLastname};{model.sFirstname};");
        vCard.AppendLine();
        vCard.Append($"FN:{model.sFirstname} {model.sLastname}");
        vCard.AppendLine();
        // Company
        vCard.Append("ORG:");
        vCard.Append(model.sCompanyName);
        vCard.AppendLine();
        // Job Title
        vCard.Append("TITLE:");
        vCard.Append(model.sJobTitle);
        vCard.AppendLine();
        // Image
        FileModel file = FileModel.getByGuid(model.sProfilePicGuid);
        vCard.Append($"PHOTO;ENCODING=BASE64;TYPE={file.sFileType}:");
        vCard.Append(Convert.ToBase64String(file.FileData));
        vCard.AppendLine(string.Empty);
        vCard.AppendLine();
        // Tel
        vCard.Append("TEL");
        vCard.Append(";");
        vCard.Append("WORK");
        vCard.Append(";");
        vCard.Append("VOICE:");
        vCard.Append(model.sCompanyPhone);
        vCard.AppendLine();
        // Cell
        vCard.Append("TEL");
        vCard.Append(";");
        vCard.Append("CELL");
        vCard.Append(";");
        vCard.Append("VOICE:");
        vCard.Append(model.sPhoneNumber);
        vCard.AppendLine();
        // Email
        vCard.Append("EMAIL");
        vCard.Append(";");
        vCard.Append("PREF");
        vCard.Append(";");
        vCard.Append("INTERNET:");
        vCard.Append(model.sEmail);
        vCard.AppendLine();
        // Web site
        vCard.Append("URL");
        vCard.Append(";");
        vCard.Append("WORK:");
        vCard.Append(model.sWebsiteUrl);
        vCard.AppendLine();
        // Address
        string address = model.sAddress.Replace("n"," ");
        vCard.Append($"ADR; WORK; PREF:; ; {address}; ; ; ; ");
        vCard.AppendLine();
        // End
        vCard.Append("END:VCARD");
        string result = vCard.ToString();

以下是生成的内容:

BEGIN:VCARD
VERSION:2.1
N:  du Preez;Armand;
FN:Armand du Preez
ORG:TestCompany
TITLE:Manager
PHOTO;ENCODING=BASE64;TYPE=image/jpeg:my Base64 string
TEL;WORK;VOICE:0745589983
TEL;CELL;VOICE:0745589983
EMAIL;PREF;INTERNET:armand3@test.com
URL;WORK:https://someurl.co.za
ADR; WORK; PREF:; ; 1 Westroad, Eastville; ; ; ; 
END:VCARD

使用vCard.AppendLine()代替vCard.Append("n"),因为iOS设备使用r而不是n作为行分离器。

vCard.AppendLine()产生rn。这样,它将在 Windows ios (linux(

中工作

最新更新