diadoc / diadocsdk-csharp

Official Diadoc SDK for C#
MIT License
34 stars 64 forks source link

Проблема при отправке документа на полку документов #1077

Open NefedovIv opened 1 year ago

NefedovIv commented 1 year ago

Добрый день.

Столкнулись с ограничением при работе через API не позволяет корректно загружать большие вложения в сообщение. Пытаемся загружать на полку документов, через api метод DiadocApi.UploadFileToShelf(string authToken, byte[] data)

Метод возвращает корректное имя файла на полке, но далее при попытке отправки сообщения через PostMessage с указанной структурой SignedContent = new SignedContent { NameOnShelf = e.NameOnShelf } Падает в ошибку: {"BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/V3/PostMessage?operationId=d1cd2f8223194dcf92bb6b2e9d34d794, AdditionalMessage=MessageToPost.DocumentAttachments[0]: Невозможно получить данные по ключу: FileName, StatusCode=BadRequest, DiadocErrorCode: DocumentService.InvalidFileContent"}

Подскажите, в чём может быть проблема?

alexxxwam commented 1 year ago

Добрый день, тут все описано , и про размер тоже

https://developer.kontur.ru/docs/diadoc-api/http/ShelfUpload.html?highlight=nameonshelf

NefedovIv commented 1 year ago

Мы используем метод UploadFileToShelf, который инкапсулирует в себе логику отправки. Данный метод возвращает корректное имя файла, соответственно файл попадает на полку. Но вот при отправке сообщения возникает ошибка.

alexxxwam commented 1 year ago

ваш метод внутри себя запускает метод стандартного api диадока , на который я дал ссылку.. файл быть может и попадает на полку , толкьо в момент прогрузки часть данных теряется.. и эта ситуация не обрабрабатывается возможно на их стороне . вы , вместо того , чтобы спорить, попробовали бы загрузить файл частично.. как есть в описании по ссылке. и уже потом делать вывод о том, чо все делаете верно

NefedovIv commented 1 year ago

Вы видимо не совсем поняли, этот метод не кастомный, этот метод находится в сборке диадок и велосипед я не придумываю использую то что предоставляется из коробки и оно не работает. Этот метод внутри себя уже инкапсулирует в себе загрузку файла частями. Зачем мне ещё раз писать то, что уже реализовано?

Assembly DiadocApi, Version=2.12.0.0, Culture=neutral, PublicKeyToken=d18fd4c7ad3c243e namespace Diadoc.Api { public class DiadocApi : IDiadocApi { ... public string UploadFileToShelf(string authToken, byte[] data); ... } }

ilzag commented 7 months ago

Мы используем метод UploadFileToShelf, который инкапсулирует в себе логику отправки. Данный метод возвращает корректное имя файла, соответственно файл попадает на полку. Но вот при отправке сообщения возникает ошибка.

Добрый день. А что передаёте в теле запроса PostMessage? Что это за документ? Для формализованных, как правило, Filename формируется на основе содержимого, а для неформализованных указывается в теле запроса PostMessage отдельно.