[Pregunta]: ¿Cómo se podría mandar un file/image (js) por ajax?

Iniciado por Leguim, 26 Octubre 2020, 18:39 PM

0 Miembros y 2 Visitantes están viendo este tema.

Leguim

En un tema anterior se había resuelto de un método diferente, pero quería ver si se podía hacer de esta manera que sería una manera más corta para mí.

Recibo un archivo a partir de un FormData, este archivo es una imagen.

(no sé como podría redimensionar la imagen, para ahorrarle la tarea al mod)


Código (javascript) [Seleccionar]

formdata.get('photo_1'); // devolverá el archivo/imagen


Ahora yo quiero que ese dato que tengo con JS mandarlo por medio de AJAX pero por medio de un parametro, es decir.

Código (javascript) [Seleccionar]

function Enviar_Imagen(image)
{
                      $.ajax({
url: 'archivo.php',
type: 'POST',
dataType: 'html',
data: {image},

success: function()
{
// proceso terminado
}
})

.done(function(results)
{
$('body').append(results);
})
}


Su aplicación sería...

Código (javascript) [Seleccionar]

Enviar_Imagen(formdata.get('photo_1')); // si existe el dato enviará lo anterior que mostré por consola, pero si no existe enviará NULL


Tengo un problema/error, que dice algo de ilegal blob...

¿Alguna ayuda?

Gracias.

EdePC

#1
Con jQuery ni idea, por lo que he estado probando no soporta en envío de datos complejos, al menos a mí me ha dado errores de Blob y Tamaño de variable PHP.

Con javascript me funciona lo siguiente:



-- El código lo pego en un PasteBin porque me es imposible pasar el Captcha (bucle infinito) >:D
https://pastebin.com/ZS9DRRJ5

- destino.php

Código (php-brief) [Seleccionar]
<?php
  
if ($_FILES) {
    echo 
'<pre>';
    echo 
htmlspecialcharsprint_r($_FILEStrue) );
    echo 
'</pre>';
  }
?>


- Mostrando
CitarArray
(
   [archivos] => Array
       (
           [name] => arvak.jpg
           [type] => image/jpeg
           [tmp_name] => D:\SFT\UniServerZ\tmp\php1A26.tmp
           [error] => 0
           [size] => 258655
       )

)

Para redimensionar la imagen puedes utilizar alguna función como https://www.php.net/manual/es/function.imagecopyresized.php

Leguim

¡GRACIAS! Más allá de no dar con la respuesta (seguramente use el método que tenía antes), pero gracias por dedicar tu tiempo en intentar ayudarme.



Gracias.  :xD