Пересылать изображения с php и jquery

Я пробую пересылать файл с php посредством move_uploaded_file но, как кажется, как не отправление формуляр из-за submit и я это перемещаю с ajax он не перемещает файл.

формуляр был бы этим:

<form id="ficha_InUsuarios" enctype="multipart/form-data">
<input name="Agen_afoto" type="file" class="upload" onchange="LeerAfoto(this,'Agen_fotico');"/>
<input type="button" id="guardar_InUsuarios" class="botonagregar desactivado" onClick="Guardar('Usuarios','guardar_InUsuarios','InUsuarios');" value="Aceptar">&nbsp;
</form>

и этот php:

$uploaddir = '../Scripts/Imagenes/Usuarios/';
$uploadfile = $uploaddir . basename($_FILES['Agen_afoto']['name']);

if (move_uploaded_file($_FILES['Agen_afoto']['tmp_name'], $uploadfile)) {
echo "Ha subido";
} else {
    http_response_code(500); echo 'Here is some more debugging info:'; print_r($_FILES);
} //si ha subido la foto

и jquery, который властвует в формуляре, - этот:

function Guardar(url,que,id) {
    var datos = $("#ficha_"+id).serialize();
    $.ajax({
            url: "Paginas/"+url+".php?que="+que,
            data: datos,
            type: "post",
    success: function(data) {
        if (data == "Nadaguardado") {  $().toastmessage('showToast', { text : 'No se ha guardado nada' , sticky : false, type : 'notice' });
        } else { //si esta guardado todo...
            $().toastmessage('showToast', { text : 'Datos almacenados correctamente' , sticky : false, type : 'success' });
            $('#ficha_'+id)[0].reset();
            $('.multibuskiselect_'+id).val(null).trigger("change");
            $('.buskiselect_'+id).val(null).trigger("change");
            CancelarNuevoGrande(id);
            console.log(data);
            } },
    error: function(xhr, status, error){ $().toastmessage('showToast', { text : 'Error al guardar '+ xhr.responseText, sticky : true, type : 'error' }); }
    });
};

Если я перехожу из javascript и использую только submit всей жизни, функционируй совершенно, но когда он происходит из-за javascript, он не пересылает фотографию: в чем я ошибаюсь?

print_r только не перемещай "array ()" ничего, что имело общее бы с изображением.

Я попытался также с FormData, но с он не перемещает меня даже информации из-за post.

function Guardar(url,que,id) {
    var datos = new FormData($("#ficha_"+id));
    $.ajax({
        url: "Paginas/"+url+".php?que="+que,
        type: 'POST',
        data: datos,
        contentType: false,
        cache: false,
        processData: false,
    success: function(data) {
        if (data == "Nadaguardado") {  $().toastmessage('showToast', { text : 'No se ha guardado nada' , sticky : false, type : 'notice' });
        } else { //si esta guardado todo...
            $().toastmessage('showToast', { text : 'Datos almacenados correctamente' , sticky : false, type : 'success' });
            $('#ficha_'+id)[0].reset();
            $('.multibuskiselect_'+id).val(null).trigger("change");
            $('.buskiselect_'+id).val(null).trigger("change");
            CancelarNuevoGrande(id);
            console.log(data);
            } },
    error: function(xhr, status, error){ $().toastmessage('showToast', { text : 'Error al guardar '+ xhr.responseText, sticky : true, type : 'error' }); }
    });
};

Большое спасибо всем из-за помощи

1
задан 21.01.2017, 14:05
0 ответов

Решенный. И чтобы давать ему возвращение гайки больше, я навязал ему также loader, если он медлит с тем, чтобы пересылать много фотографию.

Здесь вы считаете такой код каковым он остался, если у кого-то есть та же проблема.

function Guardar(url,que,id) {
    $.ajax({
        url: "Paginas/"+url+".php?que="+que,
        type: 'POST',
        data: new FormData($("#ficha_"+id)[0]),
        contentType: false,
        cache: false,
        processData:false,
    beforeSend: function() {
        $(".formulario_grande_"+id).append('<div id="loader_'+id+'" class="loader-container" style="opacity: 1;"><div class="spinchachi"></div></div>')
    },
    success: function(data) {
            $().toastmessage('showToast', { text : 'Datos almacenados correctamente' , sticky : false, type : 'success' });
            $('#ficha_'+id)[0].reset();
            $('.multibuskiselect_'+id).val(null).trigger("change");
            $('.buskiselect_'+id).val(null).trigger("change");
            CancelarNuevoGrande(id);
            },
    error: function(xhr, status, error){ $().toastmessage('showToast', { text : 'Error al guardar '+ xhr.responseText, sticky : true, type : 'error' }); }
    });
};

неудача была в способе читать FormData вместо того, чтобы использовать jquery я использовал javascript и совершенно.

2
ответ дан 03.12.2019, 17:35