Claro que mediante Ajax se puede enviar archivos, solo tienes que configurar el enctype: 'multipart/form-data', y quitar el data serialize es algo parecido a esto
Código HTML:
Ver original$('#upform').submit(function(e) {
e.preventDefault();
var dat = new FormData($(this)[0]);
$.ajax({
beforeSend: function() {
$('#msm').html('un momento por favor');
},
url: pet,
type: met,
enctype: 'multipart/form-data',
data: dat,
success: function(resp) {
$('#msm').html(resp);
alert(resp);
},
cache: false,
contentType: false,
processData: false,
error: function(jqXHR, estado, error) {
alert(estado + " " + error);
},
complete: function(jqXHR, estado) {
// alert('completo' + estado);
}