@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: 'Ошибка входящих данных'
			});
		}
	});
});
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
megafax
@megafax
web-программист
let writeSream = fs.createWriteStream(pathFile);
let upload = stream.pipe(writeSream);

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

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

Войти через центр авторизации
Похожие вопросы