php
  • jquery
  • ajax
  • symfony
  • 2015-07-01 14 views 6 likes 
    6

    Ho riscontrato problemi con il caricamento del file dal modulo al controller Symfony2 da parte di ajax.Carica file con ajax e Symfony2

    Questa è la mia forma da lato client:

    var uploadFile = function() { 
    var content = "<form id='uploadFile' enctype='multipart/form-data' action='' method='post'>" + 
         "<input id='file' type='file'/>" + 
         "</form>"; 
    $("#upload-dialog").html(content); 
    $("#upload-dialog").dialog({ 
        resizable: false, 
        title: 'Dodaj załączniki do umowy', 
        height: 300, 
        width: 450, 
        buttons: [ 
         { 
          text: 'Wyślij', 
          click: function() { 
           var formData = new FormData(); 
           formData.append('file', document.getElementById('file').files[0]); 
           $.ajax({ 
            url: Routing.generate('employees_upload_attachment'), 
            data: formData, 
            enctype: 'multipart/form-data', 
            processData: false, 
            contentType: false, 
            success: function() { 
            }, 
            error: function() { 
    
            } 
           }); 
          } 
         } 
        ] 
    }); 
    

    };

    e questo è il mio controller

    public function uploadAttachmentAction(Request $request) { 
        $fileBag = $request->files; 
        var_dump($fileBag); 
    } 
    

    Quando cerco di mostrare file caricato ottengo un oggetto FileBag vuoto:

    oggetto (Symfony \ Component \ HttpFoundation \ FileBag) # 12 (1) {
    [ "parametri": protected] => array (0) {}}

    cosa potrebbe essere sbagliato?

    EDIT: Ho risolto it.I aggiunti ai parametri jquery ajax

    cache: false, tipo: 'POST'

    e tutto è ok :)

    +0

    Avete provato a registrare il valore di 'document.getElementById ('file'). Files [0]'? – colinD

    +0

    Sì, sembra buono. – math

    +0

    Ho risolto questo problema. Ho aggiunto ai parametri di Ajax: cache: false e digitare: 'POST'. Ora è tutto ok :) – math

    risposta

    0

    Aggiunta ajax paramaters:

    cache: false, 
    type: 'POST' 
    

    Problema risolto.

    Nota: la risposta è basata sul commento non mio perché viene visualizzata nella sezione "senza risposta".

    Problemi correlati