Jump to content
carcleo

Enviar FILE do javascript ao php

Recommended Posts

carcleo

Tenho lido muita coisa à respeito do assunto e estou ficando mais confuso.

Tenho o form abaixo:

    <div class="plano">
    
      <h1 class="titulos">Cadastro de Plano</h1>
      
      <form method="post" class="planoCadastrar">
      
        <input type="text" name="nomePlano" id="nomePlano" class="typeTextMedio" placeholder="Nome"  required /><br /><br />
        
        <textarea placeholder="Descrição" class="textarea" name="descricao" id="descricao" cols="93" rows="15" required></textarea><br /> <br />
        
        <div id="multiple_upload">
            <input type="hidden" id="arquivos" name="arquivos" onChange="alert(this.value)" />
            <input type="file" multiple id="fotos"  name="fotos[]" />
            <div id="message">Selecionar fotos</div> 
            <div id="lista"></div>
        </div>          
    
        <img class="spinner" src="../_img/_bannerImgs/spinner.gif" />          
        <input type="submit" class="btnAcesso" value="Enviar" />
      
        <label class="resposta"></label>
        
      </form><br /><br />
    
      <script> 
        $('.elevate-image').ezPlus({
            zoomType: 'inner',
            cursor: 'crosshair'        
        });
      </script>  
      
    </div>  

Nele eu tenho um campo FILE para envio de arquivos.

Estou usando $.post() do jQuery para enviar esse formulário para uma página php sem refresh.

Tudo vai bem e consigo pegar no php mas o campo FILE não vai.

Estou tentando meio que uma gabiarra mas mesmo assim tive que parar para pedir ajuda.

 

O jQuery:

 

   // JavaScript Document
    $(document).ready(function(e) {
       
        $("div.conteudo div.plano form.planoCadastrar").on("submit", function() {
            
            var nomePlano = $("form.planoCadastrar input[type=text]#nomePlano").val();
            var descricao = $("form.planoCadastrar textarea#descricao").val();
            var arquivos  = $("form.planoCadastrar input[type=hidden]#arquivos").val();
            var fotosPost = $("form.planoCadastrar input[type=file]")[0].files;
            
            fotos = new Array();
                 for (var i=0; i < fotosPost.length; i++) {    
    
                     fotos[i]["name"]     = fotosPost[i].name
                     fotos[i]["type"]     = fotosPost[i].type
                     fotos[i]["size"]     = fotosPost[i].size
                     fotos[i]["tmp_name"] = fotosPost[i].tmp_name
    
                 }
                 
                 return false;
                 
            if ( nomePlano == "" || 
                 descricao == "") {
    
                alert("Algum campo está vazio!");
    
            } 
    
    
             $("div.conteudo div.plano form.planoCadastrar input[type=submit].btnAcesso").css('display', 'none');
             $("div.conteudo div.plano form.planoCadastrar img").css('display', 'block');
    
             $.post ("../_requeridos/cadastraPlano.php", {
                 
                 nomePlano   : nomePlano,
                 descricao   : descricao,
                 arquivos    : arquivos,
                 fotos       : fotos
                 
             }, function(retorno){
    
                 $("div.conteudo div.plano form.planoCadastrar input[type=submit].btnAcesso").css('display', 'block');
                 $("div.conteudo div.plano form.planoCadastrar img").css('display', 'none');
                 
                  if (retorno == 1) {
                    resposta = "Plano cadastrado com sucesso!";    
                  } else {
                    resposta = "Erro no cadastro do Plano";
                  }
                 $(".resposta").css("display", "block");
                 $(".resposta").html(resposta);     
                         
               }
              );
    
              return false;
            
        });
        
    });

Tentei fazer a tal gabiarra com o código abaixo:

         for (var i=0; i < fotosPost.length; i++) {    

             fotos[i]["name"]     = fotosPost[i].name
             fotos[i]["type"]     = fotosPost[i].type
             fotos[i]["size"]     = fotosPost[i].size
             fotos[i]["tmp_name"] = fotosPost[i].tmp_name

         }

Mas quand

o chego no 

             fotos[i]["tmp_name"] = fotosPost[i].tmp_name

Não consigo pegar o valor.

Será que existe um recurso para isso? 

Ou terei mesmo que submeter o formulário.

A ideia é pegar o array do FILE e criar um array javascript, enviar ara o php e converter novamente em array php para ver se consigo fazer o upload do arquivo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.