Я продолжаю получать следующую ошибку:
Код: Выделить всё
*** square.core.api_error.ApiError: status_code: 400, body: {'errors': [{'category': 'INVALID_REQUEST_ERROR', 'code': 'INVALID_CONTENT_TYPE', 'detail': 'Received multiple request parts. Please only supply zero or one `parts` of type application/json.'}]}
Когда я пытаюсь загрузить около ~ 800 байтов JPEG [очень зерно] в песочнице разработки для API Square с использованием следующего кода:
Код: Выделить всё
pdf_filepath = 'local/path/to/file.jpg'
idem_key = 'some-unique_key_like_square_invoice_id'
f_stream = open(pdf_filepath, "rb")
try:
# I have tried using a stream as well, still the same error
invoice_pdf = SQUARE_CLIENT.invoices.create_invoice_attachment(
invoice_id=square_original_invoice.id,
# this also does not work
# image_file=f_stream,
image_file=pdf_filepath,
request={
"description": f"Invoice-{pdf_filepath}",
"idempotency_key": idem_key,
},
)
except ApiError as e:
print(f"ERROR _attach_pdf_to_vendor_payment with errors {e}")
< /code>
В онлайн -API Sandbox API я получаю ошибку ответа 400: < /p>
// cache-control: no-cache
// content-type: application/json
// date: Wed, 30 Apr 2025 13:35:06 GMT
// square-version: 2025-04-16
{
"errors": [
{
"code": "BAD_REQUEST",
"detail": "Total size of all attachments exceeds Sandbox limit: 1000 bytes",
"category": "INVALID_REQUEST_ERROR"
}
]
}
< /code>
, как только я получил 900 байт JPG для загрузки в API Explorer (988 байт не прошел), но SDK по -прежнему ошибки с использованием того же файла.content-length: 1267
content-type: multipart/form-data; boundary=----WebKitFormBoundaryUUID38
square-version: 2025-04-16
user-agent: SquareExplorerGateway/1.0 SquareProperty ApiExplorer
------WebKitFormBoundaryUUID38
Content-Disposition: form-data;name="request"
{
"idempotency_key": "UUID-123-456-7869"
}
------WebKitFormBoundaryUUID38
Content-Disposition: form-data;name="file";filename="900b.jpeg"
Content-Type: image/jpeg
����
< /code>
Вот неудачный запрос API через мой сервер django, используя тот же файл: < /p>
content-length: 568
content-type: multipart/form-data; boundary=djangoUUID
square-version: 2025-04-16
accept-encoding: gzip
accept: */*
user-agent: squareup/42.0.0.20250416
--djangoUUID
Content-Disposition: form-data;name="request"
Content-Type: application/json;charset=utf-8
{
"description": "Invoice-path/to/file/900b.jpeg",
"idempotency_key": "path/to/original/file/normal-invoice.pdf"
}
--djangoUUID
Content-Disposition: form-data;name="image_file"
Content-Type: image/jpeg
/path/to/file/900b.jpeg
--djangoUUID--
< /code>
Обратите внимание на успешный запрос:
Content-Disposition: form-data;name="file";filename="900b.jpeg"< /code>
Content-Type: image/jpeg< /code> < /p>
и неудачный запрос:
Content-Disposition: form-data;name="request"
Код: Выделить всё
Код: Выделить всё
Специально:
Код: Выделить всё
name="image_file"
Примечания:
Вот тестовое изображение
Я помню имя параметра (
Код: Выделить всё
file
Связанные документы https://developer.squareup.com/docs/inv ... ttachments. Незначительное изменение синтаксиса, и я знаю, что в настоящее время налагается ограничение на 1000 байтов для вложения, но почему я не могу загрузить вложения в песочницу сейчас? https://developer.squareup.com/forums/t ... pply-creo- или одни parts-of-type-application-json/22126
Подробнее здесь: https://stackoverflow.com/questions/796 ... lease-only