Finalmente logro obtener una miniatura del lado del cliente usando un objeto canvas, pero tuvo que interceptar el evento submit del formulario para evitar que el formulario envié las imágenes originales, yo quiero subir las miniaturas y las estoy enviando mediante un llamado ajax, el problema que tengo es que al preguntar en el controlador if form.process().accepted: , siempre devuelve false. Transcribo el código que estoy usando. ¿cual o cuales pueden ser los problemas?
const result = $.ajax({
url: url,
data: fd,
processData: false,
contentType: false,
type:'POST',
success: function(result,status,xhr){
var labelresult = document.getElementById("idmessage"+index);
var imagenAr = document.getElementById("foto"+index);
var picture = document.getElementById("loadfoto"+index);
labelresult.innerHTML = 'Procesado, espere';
labelresult.style.color = "#27AE60";
imagenAr.value = '';
picture.src = '';
picture.width=0;
picture.height=0;
},
error: function(data) {
var labelresult = document.getElementById("idmessage"+index);
var imagenAr = document.getElementById("foto"+index);
var picture = document.getElementById("loadfoto"+index);
labelresult.innerHTML = 'Envio fallido '+JSON.stringify(data);
labelresult.style.color = "#C0392B";
imagenAr.value = '';
imagenAr.src = '';
picture.src = '';
picture.width=0;
picture.height=0;
console.log(JSON.stringify(data));} /*,
complete:function()
{
contador = contador + 1;
// window.location.href = link;
}*/
}).responseText;
event.preventDefault();
return }; // end draw
</script>
<script>
//Envia las imágenes al servidor, Para ello intercepta el evento submit del botón.
$("#MyForm").submit( function( event ){
var images, index, idturno;
$("#idsubmit").attr("disabled",true);
$("#idsubmit").attr("class", "btn btn-lg btn-primary");
$("#idsubmit").val("Trabajando...");
//images = document.getElementsByClassName('loadfoto');
images = $(".loadfoto");
idturno = $("#idpresentacion0").val();
//"
https://www.huairasoft.com.ar/SRMSE/TestThumb/thumbnail_from_client"
for (index = 0; index < images.length; ++index) {
try {
await draw(index,"{{=URL('TestThumb','thumbnail_from_client')}}",event); // Función que envia las imágenes
}
catch (error)
{
console.error(error);
}
};
$("#idsubmit").attr("disabled",false);
$("#idsubmit").attr("class", "btn-primary");
$("#idsubmit").val("Enviar");
var link = "/SRMSE/persona3/presenta_documentos?id="+idturno.toString();
//window.location.href = link;
return false;
});
//Permite ver la imagen que se cargo al hacer fileload
function leerarchivobin(id_imagen, miimagen) {
//console.log('id_imagen',id_imagen,'miimagen',miimagen)
var imagenAR = document.getElementById(id_imagen);
var ls_filename = imagenAR.value
var extension = ls_filename.substr(ls_filename.lastIndexOf('.') + 1);
var img = document.getElementById(miimagen);
extension = extension.toUpperCase()
if (imagenAR.files.length != 0 && imagenAR.files[0].type.match(/image.*/)) {
var lecimg = new FileReader();
lecimg.onload = function(e) {
img.src = e.target.result;
var myImg = document.querySelector("#"+miimagen);
img.width=198;
img.height=350;
}
lecimg.onerror = function(e) {
alert("Error leyendo la imagen!!");
}
lecimg.readAsDataURL(imagenAR.files[0]);
}
if (extension == 'PDF')
{
img.src = '../static/images/pdf.png';
img.width=40;
img.height=40;
}
else {
var img = document.getElementById(miimagen);
img.src = "";
}
};
</script>
Saludos cordiales.