Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

190
Vistas
¿Cómo cargar audio grabado en AWS S3 (recepción de 400 solicitudes incorrectas)?

Creé una aplicación NextJS React que carga audio en formato MP3 a un depósito de AWS S3 . He probado mi API Route con un componente simple de carga de archivos HTML ... ¡y funciona!

Sin embargo, cuando trato de cargar audio creado en el navegador, recibo un 400 Bad Request Error para la solicitud POST , por lo que creo que mi componente browser-record-upload Javascript es problemático. Sin embargo, no arroja ningún error, pero la carga exitosa falla.

Aquí está el componente:

 const submitVoiceMemo = async () => { console.log('this is the payload', audioFile) // audioFile is an .mp3 file that is held in state once the recording is completed const filename = encodeURIComponent(audioFile.name) console.log('this is the filename:', filename) const res = await fetch(`/api/upload-url?file=${filename}`) console.log('This is the res: ', res) const { url, fields } = await res.json() const formData = new FormData() Object.entries({ ...fields, audioFile }).forEach(([key, value]) => { formData.append(key, value) }) console.log("This is the formData: ", ...formData) const upload = await fetch(url, { method: 'POST', body: formData }) console.log("This is the upload: ", upload) // This returns a 400 error and the response below is upload failed. if (upload.ok) { console.log('Uploaded successfully!') } else { console.error('Upload failed.') } }

Como dije, con un componente simple file-upload HTML , la API funciona, así que creo que el problema está en el componente React , y no en la API . Sin embargo, aquí está la API para completar:

 module.exports = async (req, res) => { try { aws.config.update({ accessKeyId: process.env.AWS_ACCESS_KEY_1, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY_ID, region: 'us-east-2', signatureVersion: 'v4' }) const s3 = new aws.S3() const post = await s3.createPresignedPost({ Bucket: 'waveforms', Fields: { key: `voicememo/${req.query.file}`, ACL: 'public-read', ContentType: 'audio/mpeg' } }) console.log('This is the Post: ', post) res.status(200).json(post) } catch (e) { res.status(500).json({ error: e.message }) } }
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda