@jenya7771

Как получить уведомление о завершении загрузки файла через socket.io-stream?

Здравствуйте, загружаю файл на сервер через socket.io-stream из браузера. В браузере я могу следить за процессом загрузки, а как мне запустить например функцию на сервере когда закончилась загрузка?
Вот код сервера:
io.of('/admin/tasks/new').on('connection', function (socket) {

	ss(socket).on('video', function(stream, data) {

		let name = String(data.name).trim()
		let title = String(data.name).trim()
		let description = String(data.name).trim()

		if (name && title) {

			let hashName = crypto.randomBytes(40).toString('hex');
			let extension = path.extname(name)
			let pathFile = null

			if (extension === '.mp4') {

				pathFile = `./tasks/videos/${hashName}.${extension}`
			}
			
			if (pathFile) {

				let upload = stream.pipe(fs.createWriteStream(pathFile))

				upload.on('open', () => {

					socket.emit('message', {
						status: 'upload'
					});
				})

				stream.on('error', (streamErr) => {

					socket.emit('message', {
						status: 'message',
						type: 'warn',
						message: 'Во время загрузки файла произошла ошибка'
					});
				});
			} else {

				socket.emit('message', {
					status: 'message',
					type: 'warn',
					message: 'Видео файл неверного формата или повреждён'
				});
			}

		} else {

			socket.emit('message', {
				status: 'message',
				type: 'warn',
				message: 'Ошибка входящих данных'
			});
		}
	});
});
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
megafax
@megafax
web-программист
let writeSream = fs.createWriteStream(pathFile);
let upload = stream.pipe(writeSream);

writeSream.on('finish', () => {
          socket.emit('message', {
            status: 'uploaded'
          });
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
OneTwoTrip! Москва
от 120 000 до 200 000 руб.
D2C.io Екатеринбург
от 70 000 руб.
1Win Санкт-Петербург
от 80 000 до 200 000 руб.
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект