1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gaojunjie03-fileex

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

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

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

Архитектура программного обеспечения

  1. Фронтендная служба (frontend-service) — простая реализация веб-страницы (зависит от netty-client).
  2. Netty-client — клиентская часть на основе Netty.
  3. Netty-common — общие компоненты сервера Netty.
  4. Netty-server — серверная часть Netty (зависит от netty-common).
  5. MongoDB — предоставление данных об операциях (загрузка, скачивание, завершённые загрузки).

Техническая реализация

  1. Передача данных по частям осуществляется через HTTP 1.1 с использованием кодировки transfer-encoding:chunked. Код добавляется как во фронтендную часть, так и на серверную часть Netty:
pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
  1. Возобновление загрузки реализуется через класс RandomAccessFile, который может вызывать большое количество операций ввода/вывода, снижая эффективность. При первой загрузке файл не разделяется с помощью RandomAccessFile. Если загрузка прерывается и возобновляется позже, клиент запрашивает у сервера текущий размер загруженного файла. Затем клиент использует RandomAccessFile для разделения файла и продолжает загрузку через интерфейс. Аналогичный процесс применяется при скачивании, где сервер отправляет клиенту информацию о уже скачанной части файла, используя RandomAccessFile для его разделения перед отправкой.
  2. На сервере Netty без Spring Boot MVC пришлось вручную реализовать функции MVC.
  3. Поскольку Netty по умолчанию поддерживает передачу файлов по частям, но не возобновление загрузки, был модифицирован код Netty, отвечающий за приём и запись файлов. Подробности изменений можно найти в следующих файлах:
  • netty-server/src/main/java/com/netty/my/MyAbstractDiskHttpData.java;
  • netty-server/src/main/java/com/netty/my/MyDefaultHttpDataFactory.java;
  • netty-server/src/main/java/com/netty/my/MyDiskFileUpload.java.

Инструкция по установке

  1. Конфигурация класса подключения клиента к серверу находится в файле netty-client/src/main/java/com/netty/Constants.java. Здесь указываются IP-адрес сервера и порт WebSocket.
  2. Запустите фронтендный клиент frontend-service на локальном компьютере как Spring Boot сервис.
  3. Установите MongoDB на свой компьютер.
  4. Конфигурационный класс сервера находится в файле netty-client/src/main/java/com/netty/Constants.java. Обратите внимание, что в поле WEBSOCKET_IP можно указать только 0.0.0.0.
  5. Разверните сервер Netty-server. Для этого запустите команду java -jar xxxx.jar.

Использование

  1. Откройте веб-браузер и перейдите на страницу http://localhost:8789/frontend/file.
  2. В левом верхнем углу нажмите на значок «+», чтобы создать корневую директорию.
  3. Рядом с каждой директорией есть значок «+». Он позволяет создавать поддиректории.
  4. Выберите директорию, чтобы увидеть список файлов, успешно загруженных в неё.
  5. Нажмите на кнопку «Загрузить файл» и выберите файл из файловой системы вашего компьютера.
  6. После выбора файла нажмите на кнопку «Подтвердить», чтобы начать передачу файла по частям. Можно загружать несколько файлов одновременно.
  7. Центр загрузки поддерживает возобновление передачи. Вы можете приостановить загрузку, а затем продолжить или отменить её.
  8. После успешной загрузки файла список файлов обновится.
  9. Для каждого файла в списке есть кнопка «Скачать». Выберите файл и нажмите «Подтвердить» для начала скачивания. Укажите папку на вашем компьютере, куда вы хотите сохранить файл.
  10. Центр скачивания работает аналогично центру загрузки и поддерживает возобновление скачивания.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Процессор для обработки передачи больших файлов по частям с возможностью возобновления загрузки, основанный на netty, http1.1 transfer-encoding:chunked и websocket. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/gaojunjie03-fileex.git
git@api.gitlife.ru:oschina-mirror/gaojunjie03-fileex.git
oschina-mirror
gaojunjie03-fileex
gaojunjie03-fileex
master