Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

128
Views
La compresión de imágenes usando JavaScript en la entrada de archivo no funciona. ¿Dónde me estoy equivocando?

Aquí está la matriz que funciona cuando la envío a mi servidor PHP. Las imágenes no están comprimidas en esta matriz.

 Array ( [name] => Array ( [0] => IMG_3272.jpg ) [type] => Array ( [0] => image/jpeg ) [tmp_name] => Array ( [0] => C:\xampp\tmp\phpE857.tmp ) [error] => Array ( [0] => 0 ) [size] => Array ( [0] => 2267094 ) )

A continuación se muestra la matriz que no funciona. En este punto las imágenes están comprimidas.

 Array ( [name] => Array ( [0] => IMG_3270.jpg ) [type] => Array ( [0] => img/jpg ) [tmp_name] => Array ( [0] => C:\xampp\tmp\php4129.tmp ) [error] => Array ( [0] => 0 ) [size] => Array ( [0] => 12 ) )

Envié con éxito el correo electrónico con los archivos adjuntos de imagen. Sin embargo, cuando recibo el correo electrónico e intento abrirlo, aparece el error "Parece que no admitimos este formato de archivo".

Cuando las imágenes no están comprimidas, los archivos adjuntos a los correos electrónicos son visibles.

Esta es la función que se supone que comprime las imágenes y las agrega a una entrada oculta en el formulario HTML.

 async function handleImageUpload() { var fileUpload = document.getElementById("fileUpload"); const options = { maxSizeMB: 1, maxWidthOrHeight: 1920, useWebWorker: true } const compressedImages = []; for(let i = 0; i < fileUpload.files.length; i++){ const imageFile = fileUpload.files[i]; try { const compressedFile = await imageCompression(imageFile, options); compressedImages.push(compressedFile) // await uploadToServer(compressedFile); // write your own logic } catch (error) { console.log(error); } } var fileUploads = document.getElementById("fileUploads"); const dataTransfer = new DataTransfer(); const file = new File([compressedImages[0]['name']], compressedImages[0]['name'], {type: 'img/jpg'}) dataTransfer.items.add(file); fileUploads.files = dataTransfer.files; console.log(fileUploads.files) }

La razón de todo esto se debe a la lógica funky que ocurre en el backend. Por alguna razón, cuando obtengo una matriz Img de cerca de 6 mb, se envían múltiples correos electrónicos.

Aquí está el código PHP relevante. En una ruta de solicitud posterior

 $files = $_FILES['uploaded_files']; print_r($files); die(); ``
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para cualquiera que se encuentre con esta publicación.

Tenga en cuenta que el objetivo final es tener varios archivos comprimidos. En este momento puedo comprimir solo un archivo. Creo que podré hacer esto en varios archivos a través de un bucle for.

javascript front-end--

 async function handleImageUpload() { var fileUpload = document.getElementById("fileUpload"); const options = { maxSizeMB: 1, maxWidthOrHeight: 1920, useWebWorker: true } const compressedImages = []; for(let i = 0; i < fileUpload.files.length; i++){ const imageFile = fileUpload.files[i]; try { console.log(imageFile) const compressedFile = await imageCompression(imageFile, options); compressedImages.push(compressedFile) console.log(compressedImages[0]) } catch (error) { console.log(error); } } //This is a hidden input in the html document. This is what will be sent to the server. var fileUploads = document.getElementById("fileUploads"); const dataTransfer = new DataTransfer(); const file = new File([compressedImages[0]], 'Hello_world.jpg',{type:"image/jpeg"}) dataTransfer.items.add(file); fileUploads.files = dataTransfer.files; console.log(fileUploads.files) }

Usé este paquete npm a través de CDN https://www.npmjs.com/package/browser-image-compression

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!