API-интерфейс alfresco http://YOURALFRESCOHOST/alfresco/service/api/upload
ожидает: multipart/form-data
будет отправлено через запросы HTTP Post.
Таким образом, служба ожидает использования html-страницы старой школы с тегом <form>
.Значение данных будет отправлено по умолчанию, как отправка формы работает в HTML.Я предполагаю, что это было сделано таким образом, чтобы упростить процесс создания собственных экранов загрузки документов.
Конечно, под капотом это просто еще один http-запрос, поэтому почтовую операцию можно смоделировать с помощью C # или любого другого языка программирования.
К счастью, начиная с .NET 4.5 у нас есть класс MultipartFormDataContent , который можно использовать именно для этой цели.Обратитесь к приведенному ниже образцу кода, чтобы выполнить загрузку:
using (var client = new HttpClient())
{
using (var formData = new MultipartFormDataContent())
{
formData.Add(new StreamContent(File.Open("test.txt", FileMode.Open)), "filedata", "test.txt");
formData.Add(new StringContent("mysiteid"), "siteid");
formData.Add(new StringContent("mycontainerid"), "containerid");
formData.Add(new StringContent("/"), "uploaddirectory");
formData.Add(new StringContent("test"), "description");
formData.Add(new StringContent("cm:content"), "contenttype");
formData.Add(new StringContent("true"), "overwrite");
var response = client.PostAsync("http://YOURALFRESCOHOST/alfresco/service/api/upload?alf_ticket=TICKET_XXXXXXXXXXXXXXXXXXXXXXXXX", formData).Result;
string result = null;
if (response.Content != null)
{
result = response.Content.ReadAsStringAsync().Result;
}
if (response.IsSuccessStatusCode)
{
if (string.IsNullOrWhiteSpace(result))
result = "Upload successful!";
}
else
{
if (string.IsNullOrWhiteSpace(result))
result = "Upload failed for unknown reason";
}
Console.WriteLine($"Result is: {result}");
}
}
В случае успешной загрузки вы увидите такой ответ:
{
"nodeRef": "workspace://SpacesStore/38238e6f-e9d9-4158-a3ce-8a13d0962348",
"fileName": "test.txt",
"status":
{
"code": 200,
"name": "OK",
"description": "File uploaded successfully"
}
}