2014-11-06 2 views
0

Мне нужно разработать систему обмена файлами с помощью node.js, и я не уверен, как мне отправлять большие файлы между моими пользователями.Общий доступ к файлам

Сейчас у меня есть простой node.js + экспресс + socket.io сервер, который обнаруживает соединения и позволяет пользователю обмениваться небольшие файлы, просто делая:

socket.emit('file', selectedFile);

где selectedFile является File объект что исходит от обычного <input type="file">

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

+0

Скорее всего, вам придется его разбить и отправить по частям. –

ответ

0

Вот как я бы это сделать

стороне клиента

  1. Открыть файл в виде потока
  2. Создание куски определенного размера (например, 10Kb)
  3. Attach индекс для каждого блока и отправить на сервер
  4. Подтверждение записи каждого индекса с сервера
  5. Если соединение разорвано, просто запустите повторную отправку кусков файлов с последним признал индекс
  6. Повторять до тех пор, файл не будет полностью потоковым

сторона сервер

  1. Получите кусок от клиента
  2. Магазина порций в временный файл
  3. Отправка квитанции о получении клиенту
  4. После того, как все куски получены, соберите в правильном порядке и преобразуйте в соответствующую схему кодирования.
Смежные вопросы