Доброго времени суток.
Делал интеграцию с хранилищем SharePoint(далее SP). А именно реализовал простой экспорт и импорт файлов.
На деталь "Файлы и ссылки" добавляется файл. Он сразу же уходит в SP.
В своём классе реализовал два метода ReadAsync и WriteAsync интерфейса IFileContentStorage.
Всё работает. Файлы экспортируются в SP и импортируются. Но есть проблема с офисными файлами.
А именно с xlsx, xls, docx, doc, pptx. Возможно проблемы и с офисными файлами других расширений. Не проверял.
Файлы с этими расширениями уходят в SP. Но если их обратно прочитать, то они уже приходят битыми.
То есть при открытии появляется следующее сообщение:
Ошибка в части содержимого в книге. Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку "Да".
Если нажать "Да", то открывается страница Excel или Word с сообщением, что "Excel или Word удалось открыть файл, восстановив или удалив нечитаемое содержимое".
После нажатия "Да", файл может быть полностью восстановлен, а может открыться пустым. Если выгрузить файлы, которые пришли в SP, напрямую из хранилища(нажать "Download" на странице SP), то они открываются без ошибок.
С файлами других расширений подобных проблем нет. Графические файлы, текстовые, pdf - всё отлично.
Для реализации импорта и экспорта пробовал использовать HttpWebRequest, RestClient, HttpClient. Результат один и тот же.
Для эксперимента создал консольное приложение, где применил те же способы экспорт и импорта. Только добавил сохранение полученного из SP значения Stream в файл на диск. Файл открылся без ошибок.
Не пойму, почему при реализации метода ReadAsync, который возвращает Task, появляются подобные проблемы. Может кто-то реализовывал подобное и тоже сталкивался с такими ошибками?
Нравится
Добрый день!
Боюсь, что не сможем помочь с данной проблемой так как мы не работаем с хранилищем SharePoint и поэтому не знаем его особенностей.
Логично предположить, что проблема возникает именно при экспорте из SP. Возможно нарушился поток передачи и как результат файл пришёл неполный.
На маркетплейсе есть коннектор к SP от сторонних разработчиков и там можно найти небольшую документацию по реализации, возможно она вам поможет.