PHP-клиент хранилища Azure не может пройти проверку подлинности при загрузке потокового содержимого файла - PullRequest
0 голосов
/ 10 октября 2019

Я использую библиотеку azure-storage-php для копирования файлов на файловый ресурс хранилища Azure.

Перемещение файлов на файловый ресурс в целом работает, но при использовании потокового содержимого файла появляется ошибка аутентификации:

Fail:
Code: 403
Value: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
details (if any): <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:070c24e7-ABCD-EFGH-7f8e6d000000
Time:2019-10-10T11:45:35.8832342Z</Message><AuthenticationErrorDetail>The MAC signature found in the HTTP request 'X+WJOUaKHhOABCDEFGHIJKLMNOPQRSTUVWXYZe5Iu2k=' is not the same as any computed signature. Server used following string to sign: 'PUT


568340

text/csv
Thu, 10 Oct 2019 11:45:35 GMT





x-ms-range:bytes=0-568339
x-ms-request-id:5d9f19dfd2dae
x-ms-version:2016-05-31
x-ms-write:Update
/username/file-share-name/myFile.csv
comp:range'.</AuthenticationErrorDetail></Error>

Я уже убедился, что системное время синхронизировано,как у некоторых людей были проблемы с этим.

Файл даже создан в хранилище и заполнен большим количеством строк

0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

Я использую https://github.com/thephpleague/flysystem какслой абстракции. Чтобы открыть поток, я попытался использовать $stream = fopen('filePath.csv', 'rb') и $flysystem->readStream('localFilesystem', 'filePath.csv');

1 Ответ

0 голосов
/ 14 октября 2019

После подсказки Гаурава Мантри я понял, что ошибка возникает только тогда, когда размер потокового файла ниже определенного порога. В моем случае это было около 4 МБ.

Загрузка потоковых файлов <4 МБ привела к описанной ошибке. </p>

Загрузка потоковых файлов> 4 МБ работает просто отлично.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...