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

132
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
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