J'ai un problème ennuyeux et je ne suis pas sûr que quelqu'un connaisse la réponse, mais demander ne coûte rien.
Je joins un fichier PDF par le biais d'un mode PATCH au serveur avec l'API de restauration de Domino-Data-Service. L'attachement fonctionne correctement, mais l'attachement dans le champ de texte riche a un nom généré automatiquement.
Ma question : Comment puis-je changer le nom de ce fichier en le joignant.
J'ai écrit mon code en C#, mais je pense que ce n'est pas un problème dépendant du langage de programmation.
Mon code pour attacher le PDF (C#) :
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes({username:passwort})));
Byte[] bytes = File.ReadAllBytes(@"H:\jakob.pdf");
String file = Convert.ToBase64String(bytes);
var json = "{" +
"\"anmerkung\":{" +
"\"type\":\"multipart\"," +
"\"content\":[ {" +
"\"contentType\":\"application/pdf\"," +
"\"data\":\"" + file + "\"," +
"\"contentTransferEncoding\":\"base64\"" +
"}" +
"]" +
"}" +
"}";
var data = new StringContent(json, Encoding.UTF8, "application/json");
var url = @"https://{database}/api/data/documents/unid/424CC34CFB0746F6C12585A7003B277B?computewithform=true&form={formname}";
var response = await client.PatchAsync(url, data);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(result);
client.Dispose();
Cela fonctionne bien mais mon PDF ressemble à ceci :
Je veux que le fichier pdf ait le nom jakob.pdf
J'ai donc essayé de reconstruire le json, de la manière dont il est construit lorsqu'on utilise une requête GET vers un document contenant un fichier PDF dans un champ de texte enrichi.
Mon code pour attacher le PDF, avec la reconstruction du json(C#) :
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes({username:passwort})));
Byte[] bytes = File.ReadAllBytes(@"H:\jakob.pdf");
String file = Convert.ToBase64String(bytes);
var json2 = "{" +
"\"anmerkung\":{" +
"\"type\":\"multipart\"," +
"\"content\":[ {" +
"\"contentType\":\"application/pdf; name=\"jakob.pdf\"\","+
"\"contentDisposition\":\"inline; filename=\"jakob.pdf\"\","+
"\"data\":\"" + file + "\"," +
"\"contentTransferEncoding\":\"base64\"" +
"}" +
"]" +
"}" +
"}";
var data = new StringContent(json2, Encoding.UTF8, "application/json");
var url = @"https://{database}/api/data/documents/unid/424CC34CFB0746F6C12585A7003B277B?computewithform=true&form={formname}";
var response = await client.PatchAsync(url, data);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(result);
client.Dispose();
Quand j'utilise ce code, je reçois toujours un message d'erreur :
"code":400,
"text":"Bad Request",
"message":"Fehler beim Parsen der JSON-Inhalte",
"type":"text",
"data":"com.ibm.domino.services.ServiceException: Fehler beim Parsen der JSON-Inhalte\r\n\tat
En ce qui concerne ce morceau de code, je ne suis même pas sûr que ce code fonctionnerait normalement, c'était juste une idée, que j'ai essayée.
Je sais que c'est un problème très complexe et difficile, mais peut-être que quelqu'un connaît la réponse à ce problème ou a une idée pour le résoudre.
Merci d'avance !