","image":"http://www.luping.net/uploads/20241104/17307198076728b03faccae.jpg","datePublished":"2024-11-08T22:31:00+08:00","dateModified":"2024-11-08T22:31:00+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как читать и отображать текущий размер загруженного файла на сервере в режиме реального времени, не блокируя сервер и клиент?

Как читать и отображать текущий размер загруженного файла на сервере в режиме реального времени, не блокируя сервер и клиент?

Опубликовано 8 ноября 2024 г.
Просматривать:676

How to Read and Echo Currently Writing Size of Uploaded File in Server in Realtime Without Blocking Server and Client?

Как в реальном времени прочитать и распечатать размер загруженного файла, записываемого на стороне сервера, не блокируя сервер и клиент?

Давайте остановимся на этом вопросе:

Чтобы отслеживать ход загрузки файла в режиме реального времени, мы устанавливаем его из объекта Blob, File, TypedArray или ArrayBuffer посредством выборки. () в запросе POST Объект тела.

Текущая реализация устанавливает объект File в качестве второго аргумента функции fetch(), передаваемой в объект body.

Требования:

as text/event-stream считывает размер файла, записываемого в файловую систему сервера, и отображает его обратно клиенту. Останавливается, когда все байты, предоставленные параметром строки запроса var в запросе GET, записаны. Чтение файла в настоящее время происходит в отдельной среде сценариев, где выполняются вызовы GET для сценария, который читает файл, а затем выполняется POST для сценария, который записывает файл на сервер.

Подождите, пока вы не заполните раздел эха размера файла, прежде чем пытаться решить потенциальные проблемы с обработкой записи или чтения файлов на стороне сервера, чтобы получить текущий размер файла.

В настоящее время пытаюсь использовать PHP для удовлетворения требований. Но также интересуюсь c, bash, nodejs, python или другими языками или методами, которые можно использовать для выполнения той же задачи.

Часть JavaScript на стороне клиента в порядке. Я просто недостаточно хорошо разбираюсь в php (один из наиболее широко используемых серверных языков в мире), чтобы реализовать шаблон без включения ненужных частей.

Мотивация:

Индикатор прогресса при извлечении?

Связанное:

Извлечение с помощью ReadableStream

Проблема:

Получить

PHP Notice:  Undefined index: HTTP_LAST_EVENT_ID in stream.php on line 7

в терминале.

Кроме того, если

while(file_exists($_GET["filename"]) 
  && filesize($_GET["filename"]) < intval($_GET["filesize"]))

заменяется на

while(true)

Это приведет к возникновению ошибки в EventSource.

Без вызова Sleep() правильный размер файла отправляется в событие сообщения для файла размером 3,3 МБ, 3321824, 61921, 26214 и 38093 печатаются соответственно, когда один и тот же файл загружается три раза. Ожидаемый результат — получить размер файла при записи файла по адресу:

stream_copy_to_stream($input, $file);

вместо размера файла загруженного файлового объекта. Будет ли функция fopen() илиstream_copy_to_stream() препятствовать доступу других процессов php к потокуstream.php?

Что уже пробовалось:

php Цитата из

  • Помимо $_POST, $_GET и $_FILE: в JavaScriptPHP обработка Blob
  • Отправленные сервером события на примере PHP Введение

php

// 能否合并 `data.php`、`stream.php` 为同一个文件?
// 能否使用 `STREAM_NOTIFY_PROGRESS` 
// "Indicates current progress of the stream transfer 
// in bytes_transferred and possibly bytes_max as well" to read bytes?
// do we need to call `stream_set_blocking` to `false`
// data.php
// stream.php

javascript





Заявление о выпуске Эта статья перепечатана по адресу: 1729432843. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3