• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

420
Views
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 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error