I have an annoying problem and I am not sure anyone knows the answer, but asking cost nothing.
I am attaching a PDF-File via a PATCH-Methode to the Server with the Domino-Data-Service Rest-API. The attaching does work properly, but the attachment in the rich-text-field does have a automatically generated name.
My question: How can I change the name of this file by attaching it.
I wrote my code in C#, but I think this is not an programming language depending problem.
My code for attaching the 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();
This works fine but my PDF looks like this:
I want the pdf file to have the name jakob.pdf
So I tried to rebuild the json, in the way the json is build when using a GET-Request to a document with a PDF file in a rich-text-field
My code for attaching the PDF, with the rebuild 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();
When I' m using this piece of code I always get an error-message:
"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
Regarding to this peice of code I am not even sure, if this code would normally work it was just an idea, that I tried.
I know this is a very complex and difficult problem, but maybe somone knows the answer to this problem or has some idea to fix this problem.
thanks in advance!