Поэтому из-за ограничений Cloudflare в 250 МБ я пытаюсь обойти его с помощью кодирования Chunked, который должен загружать файлы порциями таким образом, что я не получаю 413 Request Entity Too Large
поэтому я следовал общей идее этого.
https://github.com/php-curl-class/php-curl-class/issues/369
И он по-прежнему возвращает эту ошибку, но я не знаю, как правильно проверить заголовки, что он разбит на куски, и, возможно, я просто что-то напутал?
$stream = fopen($getFile, 'r');
// Create a curl handle to upload to the file server
$ch = curl_init($getServer . '/Upload?server=' . $getOldest['vt_server'] . '&video=' . $getOldest['v_key'] . '&type=' . $getOldest['vt_filetype']);
// Send a PUT request
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
// Let curl know that we are sending an entity body
curl_setopt($ch, CURLOPT_UPLOAD, true);
// Let curl know that we are using a chunked transfer encoding
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Transfer-Encoding: chunked'));
// Use a callback to provide curl with data to transmit from the stream
curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) {
return fread($stream, 1024);
});
curl_exec($ch);
curl_close($ch);
Просто чтобы добавить немного больше информации, есть еще одна часть кода, где пользователь загружает ее через форму, а затем с помощью JS / PHP он может выполнять загрузку чанков, что помогает мне обойти ограничения Cloudflare, а наоборот — нет. не работает должным образом.
$putdata = fopen("php://input", "r");
$fp = fopen($path['videos'] . '/' . $_GET['video'] . '.' . $_GET['type'], "w");
while ($data = fread($putdata, 1024 * 1024))
fwrite($fp, $data);
fclose($fp);
fclose($putdata);
Добавлен код для чтения / записи данных.
ОБНОВЛЕНИЕ: Я пытался связаться с Cloudflare по поводу частичной передачи HTTP, и, если это возможно, и они не дали мне конкретного ответа, кроме рекламы своей платформы Cloudflare Streaming. И я все еще борюсь с этой проблемой, кто-нибудь знает много о лимите загрузки Cloudflare и частичную загрузку с ним?
Задача ещё не решена.
Других решений пока нет …