Мне нужно загрузить файлы docx в хранилище MS Azure, сейчас я просто использую Postman для его тестирования. Я получил ответ 201 и вижу, что файлы успешно загружены, но когда я пытаюсь их скачать (вручную) они все битые. Я допустил какую-то ошибку в запросе, может кто-нибудь проверить, пожалуйста?
cURL(заменены некоторые детали):
curl --location --request PUT 'https://mycompany.blob.core.windows.net/mycontainer/test10.docx?SAS_token' \
--header 'x-ms-date: 2024-04-30T11:17:08.494Z' \
--header 'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document' \
--header 'Content-Length: 17274' \
--header 'x-ms-version: 2020-04-08' \
--header 'x-ms-blob-type: BlockBlob' \
--form '=@"/Users/user/Desktop/folder/test.docx"'
Ответ был в порядке, также я вижу файл в контейнере:
Но при загрузке файл ломается:
Кроме того, если я загружаю его вручную, он работает. Итак, я уверен, что проблема где-то в PUT-запросе, который я использую, или где-то в настройках безопасности.
Спасибо.
Проблема связана со следующей строкой в вашем запросе:
--form '=@"/Users/user/Desktop/folder/test.docx"'
По сути, вы отправляете файл с помощью multipart/form-data
, который на самом деле не поддерживается в хранилище Azure. Вам нужно будет отправить необработанные данные.
Пожалуйста, попробуйте заменить параметр --form
на параметр -T
и укажите путь к файлу.
Ваша команда будет примерно такой:
curl --location --request PUT 'https://mycompany.blob.core.windows.net/mycontainer/test10.docx?SAS_token' \
--header 'x-ms-date: 2024-04-30T11:17:08.494Z' \
--header 'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document' \
--header 'Content-Length: 17274' \
--header 'x-ms-version: 2020-04-08' \
--header 'x-ms-blob-type: BlockBlob' \
-T '/Users/user/Desktop/folder/test.docx'
Спасибо чувак! Ценю!