Je suis en train d'écrire un programme pour un client où il peut exporter des informations en tant que VCard en utilisant .NET MVC.Création d'une vCard avec une photo qui fonctionne sur Windows et ios - C#
J'ai tout ce qui fonctionne correctement lorsque je télécharge la vCard sur Windows, mais le code que j'ai ne semble pas attacher l'image lorsque je télécharge la vCard sur un périphérique IOS.
Ceci est la première vCard que j'ai jamais écrite donc pas quelque chose que je connais trop bien. J'utilise V2.1 comme sa seule version que je pourrais obtenir l'image à afficher sur une machine Windows. Je suis ouvert à toutes les suggestions ici et aussi toute information sur la raison pour laquelle l'image ne tire pas sur 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();
Ce qui suit est ce qui a été généré:
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:[email protected]
URL;WORK:https://someurl.co.za
ADR; WORK; PREF:; ; 1 Westroad, Eastville; ; ; ;
END:VCARD
Les périphériques IOS sont des périphériques semblables à unix. Donc je regarderais le retour "\ n" et essayerais juste un "\ r". – jdweng
Merci pour la réponse rapide, j'ai essayé le ci-dessus, en changeant le caractère de retour cela brise complètement sur les machines Windows et ios. J'ai modifié ma question pour inclure la chaîne vCard générée. – ArmandDuPreez
Il travaille actuellement sur Windows et IOS - La seule chose est que l'image ne fonctionne pas sur IOS où il est sur Windows. – ArmandDuPreez