Intereting Posts
Как заставить класс загрузки файлов CodeIgniter принимать все расширения? Каким образом лучше всего использовать хэш-пароль? не получить ошибку Исключение несоответствия токена в Verify csrf token в laravel 5.5 Как сравнить одно значение ключа массива с другим значением индекса массива? Как перезагрузить запрос http.get после выполнения функции Список записей, сгруппированных по названию категории Что лучше перенаправить, разрешение экрана или пользовательский агент? Как я могу разбить строку при первом появлении «-» (знак минус) на два $ vars с PHP? Выберите, где поле не равно Mysql Php как удалить файл из каталога, используя php Изменение почтового отправителя phpmailer неожиданная ошибка T_FUNCTION при использовании функции (array $ matches) " Как отладить php в Eclipse Ошибка MYSQL: предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, boolean given Проблема с мостом PHP / Java

Загрузите файлы file_put_contents с прогрессом

Я пытаюсь написать код с файлом загрузки и вернуть статус (загруженные байты). Для загрузки файла я использую file_put_contents, и это работает.

function downloadLink($link,$destination) { $ctx = stream_context_create(); stream_context_set_params($ctx, array("notification" => "stream_notification_callback")); $mb_download = file_put_contents($destination, fopen($link, 'r'),null,$ctx); return $mb_download; } function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) { file_put_contents( 'progress.txt', '' ); $fp = fopen('progress.txt', 'a' ); fputs( $fp,$bytes_transferred); fclose( $fp ); echo 1; } 

Это мои функции. У меня проблема с использованием функции обратного вызова, потому что все функции находятся внутри одного класса. Теперь stream_notification_callback не используется. Я пытаюсь изменить декларацию на

 stream_context_set_params($ctx, array("notification" => "$this->stream_notification_callback()")); 

Или

 stream_context_set_params($ctx, array("notification" => $this->stream_notification_callback())); 

Но это не работает.

Вы должны попробовать

 stream_context_set_params($ctx, array( "notification" => array($this, 'stream_notification_callback') )); 

Вы проверили php.net , так как там упомянутые имена параметров «уведомление» – имя определяемой пользователем функции обратного вызова, вызываемой всякий раз, когда поток инициирует уведомление.