Загрузить документ на Alfresco, используя C # (HTML-форма POST, без CMIS) - PullRequest
1 голос
/ 24 июня 2019

Документация alfresco не дает хорошего объяснения, какой тип HTTP-запроса он ожидает для выполнения загрузки.

Может кто-нибудь объяснить, как загрузить документ в Alfresco DMS, используя простые запросы HTTP, а не CMIS?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

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"
   }
}
0 голосов
/ 25 июня 2019

Если вы используете версию 5.2 или выше, всегда проверяйте API Explorer, чтобы увидеть, что уже существует, с хорошей документацией:

https://api -explorer.alfresco.com / апи-исследователь / #! / Узлы / updateNodeContent

После этого вы можете перейти к локальной установке и просмотреть все установленные веб-скрипты (для любой версии Alfresco):

http://localhost:8080/alfresco/service/

После этого просмотрите Интернет и ТАК:)

...