Доброго времени суток.

Делал интеграцию с хранилищем 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, появляются подобные проблемы. Может кто-то реализовывал подобное и тоже сталкивался с такими ошибками?

 

Нравится

1 комментарий

Добрый день!

Боюсь, что не сможем помочь с данной проблемой так как мы не работаем с хранилищем SharePoint и поэтому не знаем его особенностей.

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

На маркетплейсе есть коннектор к SP от сторонних разработчиков и там можно найти небольшую документацию по реализации, возможно она вам поможет.

Показать все комментарии