Распространенная проблема при использовании возобновляемой загрузки заключается в том, что окончательный размер загрузки неизвестен при ее запуске. Google решил эту проблему, позволив пользователю (кредит этот SO-ответ ):
(a) отправить чанк, не кратный 256 КБ (необходимый чанк) размер GCS) или
(b) отправка чанка с байтами NNN-MMM / (MMM + 1). То есть последний блок содержит общий размер для загрузки и указывает, что он содержит последний байт
Проблема, с которой я столкнулся, заключается в крайнем случае отправки последнего фрагмента, кратного 256 КБ, и он не знает, что это последний блок до тех пор, пока он не будет отправлен в GCS API. Я думал, что смогу обойти это, отправив нулевой байтовый блок с заголовками Content-Length: 0 и Content-Range: NNN-MMM / (MMM + 1), например (Content-Range: 262143-262143 / 262144 ). Это, похоже, не работает, и я получаю ответ 408 тайм-аут, и объект не завершен.
Что я могу сделать, чтобы решить эту проблему и сообщить GCS API, что моя загрузка завершена после того, как я уже загрузил все данные?