2017-04-25 16 views
2

현재 .NET MVC를 사용하여 정보를 VCard로 내보낼 수있는 클라이언트 용 프로그램을 작성하고 있습니다.Windows 및 ios에서 작동하는 사진으로 vCard 만들기 - C#

Windows에서 vCard를 다운로드 할 때 모든 문제가 올바르게 처리되었지만 vCard를 IOS 장치에서 다운로드 할 때 코드가 이미지를 첨부하지 않는 것 같습니다.

이것은 내가 작성한 첫 번째 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:[email protected] 
URL;WORK:https://someurl.co.za 
ADR; WORK; PREF:; ; 1 Westroad, Eastville; ; ; ; 
END:VCARD 
+0

IOS 장치는 유닉스 계열 장치와 유사합니다. 그래서 나는 "\ n"을보고 "\ r"을 시도 할 것입니다. – jdweng

+0

빠른 응답을 보내 주셔서 감사합니다. 위의 방법을 시도해 보았습니다. 반환 문자를 변경하면 Windows 및 ios 시스템에서 완전히 손상됩니다. 생성 된 vCard 문자열을 포함하도록 내 질문을 편집했습니다. – ArmandDuPreez

+0

현재 Windows 및 IOS에서 작동하고 있습니다 - 유일한 점은 이미지가 Windows에있는 IOS에서 작동하지 않는다는 것입니다. – ArmandDuPreez

답변

2

사용 vCard.AppendLine() 대신 vCard.Append ("\ n")를 IOS 장치 "대신"\ r에 "을 사용하기 때문에 \엔".

vCard.AppendLine()은 "\ r \ n"을 생성합니다. 그렇게하면 Windows 및 IOS (Linux)에서 작동합니다.

+0

고마워요 - 모든 것을 AppendLine()으로 변경했습니다. IOS의 이미지를 제외한 모든 레코드가 완전히 빠져 나가고 있습니다. – ArmandDuPreez

+1

이미지의 경우 vCard.AppendLine ($ "PHOTO; ENCODING = BASE64; TYPE = {file.sFileType} :"); 이것은 이미지의 내용 이전에 줄을 끊기 때문입니다. 이 경우 vCard.Append ($ "PHOTO; ENCODING = BASE64; TYPE = {file.sFileType} :"); –

+0

안녕하세요 Alejandro, AppendLine을 Append로 변경하면 사진을 표시하는 데 문제가있는 것 같았습니다. 대단히 감사합니다, 당신은 챔피언입니다. – ArmandDuPreez