cloudinary / cloudinary/cloudinary_php

API returns 500 "General Error" when trying to upload an image that is larger than the `chunk_size`

Đang mở
#412 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
PHP
Star
399
Fork
151
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

I noticed, that the API returned a "General Error" when I tried to upload an image that is larger than 20 MB.
After some research I found a matching issue in the cloudinary_android-Repo: https://github.com/cloudinary/cloudinary_android/issues/148.
After reading the docs (https://cloudinary.com/documentation/upload_images#chunked_asset_upload), I set the `chunk_size` to a value that is larger than 20 MB (e. g. 30000000) when calling the upload-function.
That fixed my problem. However, the [Chunked asset upload](https://cloudinary.com/documentation/upload_images#chunked_asset_upload) feature doesn't seem to work.

## Issue Type (Can be multiple)
- [x] Behaviour - Functions aren’t working as expected (such as generate URL)
- [x] Documentation - Inconsistency between the docs and behaviour

## Steps to reproduce
Try to upload a file larger than 20 MB (or the \Cloudinary\Configuration\ApiConfig::DEFAULT_CHUNK_SIZE respectively).

## Error screenshots or Stack Trace (if applicable)
Message: "Cloudinary\Api\Exception\GeneralError: General Error in .../vendor/cloudinary/cloudinary_php/src/Api/BaseApiClient.php:417
Stack trace:
#0 .../vendor/cloudinary/cloudinary_php/src/Api/BaseApiClient.php(337): Cloudinary\Api\BaseApiClient->handleApiResponse(Object(GuzzleHttp\Psr7\Response))
#1 .../vendor/guzzlehttp/promises/src/Promise.php(209): Cloudinary\Api\BaseApiClient->Cloudinary\Api\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 .../vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), NULL)
#3 .../vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 .../vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(159): GuzzleHttp\Promise\TaskQueue->run()
#5 .../vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(185): GuzzleHttp\Handler\CurlMultiHandler->tick()
#6 .../vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute(true)
#7 .../vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn()
#8 .../vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending()
#9 .../vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList()
#10 .../vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending()
#11 .../vendor/cloudinary/cloudinary_php/src/Api/ApiClient.php(348): GuzzleHttp\Promise\Promise->wait()
#12 .../vendor/cloudinary/cloudinary_php/src/Api/ApiClient.php(282): Cloudinary\Api\ApiClient->postLargeFileAsync('image/upload', Object(GuzzleHttp\Psr7\Stream), Array, Array)
#13 .../vendor/cloudinary/cloudinary_php/src/Api/Upload/UploadTrait.php(138): Cloudinary\Api\ApiClient->postFileAsync('image/upload', 'data:image/jpeg...', Array, Array)
#14 .../vendor/cloudinary/cloudinary_php/src/Api/Upload/UploadTrait.php(162): Cloudinary\Api\Upload\UploadApi->uploadAsync('data:image/jpeg...', Array)
#15 ...: Cloudinary\Api\Upload\UploadApi->upload('data:image/jpeg...', Array)

## Operating System
- [x] Linux

## Environment and Frameworks (fill in the version numbers)

- PHP Cloudinary SDK version - 2.14.0
- PHP Version - 8.2.25
- Framework (Laravel, Symphony, etc) - 6.2.10

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với ApiConfig::DEFAULT_CHUNK_SIZE và luồng upload trong UploadTrait.php, ApiClient.php và BaseApiClient.php, đặc biệt là việc xử lý phản hồi xung quanh BaseApiClient.php:417. Tái hiện một lần upload lớn hơn 20 MB với kích thước chunk mặc định, sau đó xác minh rằng các lần upload theo chunk hoàn tất mà không có General Error và vẫn nhất quán với hành vi được mô tả trong tài liệu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
php
Lĩnh vực
api, backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
32/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.