Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

518
Visualizações
Fusión de datos: aplicación/flujo de octetos; fragmentos de video base64 en un archivo

Tengo un botón de carga en mi página en el que el usuario puede hacer clic para cargar un video. Si el video es grande, el Lector de archivos de Javascript no puede manejarlo. Así que implementé una función que divide el video subido en fragmentos con la etiqueta 'data:application/octet-stream;base64' al principio. Mientras tanto, la función envía cada fragmento al backend de NodeJS, donde uso algunos enfoques 'fs' para fusionar el archivo de video y guardarlo como un archivo mp4 en mi disco. El problema es que el archivo está 'vacío'. Mi PC lo reconoce como un archivo mp4, no hay ningún error de formato de archivo incorrecto. Pero el video no tiene contenido y dura 0 segundos. ¿Cómo puedo fusionar fragmentos correctamente para que el archivo mp4 funcione?

Interfaz:

 let reader; let file; const slice_size = 1024; const start_chunks_upload = (e) => { event.preventDefault(); reader = new FileReader(); file = e.target.files[0]; upload_file_chunks(0); } const upload_file_chunks = (start) => { const next_slice = start + slice_size + 1; const blob = file.slice(start, next_slice); reader.onloadend = (e) => { if (e.target.readyState !== FileReader.DONE) { return; } $.ajax({ type: 'POST', url: 'http://localhost:5000/video', data: { video: e.target.result.replace('data:application/octet-stream;base64,', ''), is_done: next_slice < file.size ? null : true, }, success: function(data) { const size_done = start + slice_size; const percent_done = Math.floor((size_done / file.size) * 100); console.log(percent_done + '%'); if (next_slice < file.size) { upload_file_chunks(next_slice); } else { console.log('done'); } } }); }; reader.readAsDataURL(blob); } video_upload_button.addEventListener('change', (e) => start_chunks_upload(e));

back-end:

 let string = ''; app.post('/video', (req, res) => { string += req.body.video; if (req.body.is_done) { let buff = new Buffer.from(string, 'base64'); fs.writeFileSync('/one.mp4', buff); fs.writeFile("/two.mp4", string, 'base64', function(err) { console.log(err); }); fs.appendFile('/log.txt', string, function (err) { if (err) { console.log(err); } }) } else { return res.json({ok: 1,}); } })
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda