#php #symfony #microsoft-graph-api
Вопрос:
используя наше приложение symfony, мы хотим получить доступ к файлам с нашего диска sharepoint.
Я успешно загрузил файл в свое приложение на локальном хосте, используя библиотеку msgraph-sdk-php и следующий код:
контроллер вызывает следующую функцию:
public function downloadFile(string $driveId, string $itemId, string $file)
{
$file= $this->fileDir . '/doc/' . uniqid('cloud_', true) . '.docx';
return $this->getGraph()
->createRequest('GET', $this->getUrl($driveId, $itemId) . '/content' . $format)
->download($file);
}
Как я уже сказал, на локальном хосте (windows с WSL) все работает нормально.
Однако на моем тестовом сервере symfony (ubuntu) файл создан, но пуст (размер: 0 кб).
Какая-нибудь конфиурация или чего-то не хватает?
Комментарии:
1. Видите ли вы какие-либо ошибки в своих журналах? SDK использует «Жрут под капотом», возможно, вы сможете зарегистрировать ответ, который вы получите на свой запрос, чтобы узнать, есть ли какие-либо ошибки при подключении к SharePoint. И Guzzle 6, и 7 предоставляют промежуточное программное обеспечение для журналов, которое вы могли бы использовать для этого.
2. Спасибо за ответ. Я проверю журналы. Тем временем я заметил, что ответ возвращается с кодом состояния 302 (перенаправление). Должен ли я включить что-то для этого (например, CORS)?
3. @dbrumann Я проверил журналы с помощью MessageFormatter({ошибка}). Об ошибках не сообщается. Статус-302. Тело ответа пусто. Это перенаправление, похоже, является проблемой, так как я мог загрузить файл с помощью microsoft.graph.downloadUrl. Однако, поскольку я хочу конвертировать файлы с помощью PDF, я хотел бы использовать /контент? формат?pdf, если возможно… почему Guzzle не следует перенаправлению на моем тестовом сервере?
4. Правка: Отследил его еще немного. По какой-то причине заголовок «Местоположение» отсутствует в ответе на моем тестовом сервере. Есть какие-либо предложения, которые могут вызвать это? Конфигурация Nginx или CORS?
5. Фу, издалека трудно сказать. Я не знаком с администрированием SharePoint. Он может быть настроен там или применяться только в определенных случаях, или, как вы предлагаете, что-то в вашей инфраструктуре, например, nginx, лак или что-то еще, обрабатывающее трафик, изменяет заголовки. Я не думаю, что КОРС играет в этом какую-то роль. В большинстве случаев это обрабатывается самим приложением, поэтому я ожидаю, что вы, по крайней мере, получите правильное перенаправление с указанием местоположения.