Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Upload Assincrono


FeRRuGe

Pergunta

Bom dia, galera...

Sou novo aqui no fórum, e to precisando de uma ajudinha aki...

Sou programador PHP e desenvolvi uma intranet GRANDE para um empresa, toda com PHP e Ajax... Obviamente, o cliente adorou o fato de não haver reload de pg e tal, mas eu me deparei com um probleminha: o upload de formulários com arquivos. Estou usando a função MicoXUpload, que axei por ae na net... Só que eu não sei porque, essa função tah estourando meu layout... Toda vez q a uso, mesmo que o input file esteja com o tamnho definido no style, ele é aumentado ateh aparecer o caminho completo do arquivo, e dae arrebenta com td...

aahuahuhauhahuahua...

dei uma pesquisada aki no forum, mas não consegui encontrar nenhum scriptzinho pronto de upload de forms com arquivos... Será que alguém aki poderia me ajudar com um script mais simples? Deixo aki a função q uso, para o caso de alguém não conhecer...

Obrigado desde já...

[]´s :rolleyes:

function micoxUpload(form,url_action,id_elemento_retorno,html_exibe_carregando,html_erro_http){
/******
* micoxUpload - Submete um form para um iframe oculto e pega o resultado. Consequentemente pode
*               ser usado pra fazer upload de arquivos de forma assíncrona.
* Use a vontade mas coloque meu nome nos créditos. Licença Creative Commons.
* Versão: 1.0 - 03/03/2007 - Testado no FF2.0 IE6.0 e OP9.1
* Autor: Micox - Náiron JCG - elmicox.blogspot.com - micoxjcg@yahoo.com.br
* Parametros:
* form - o form a ser submetido ou seu ID
* url_action - url pra onde deve ser submetido o form
* id_elemento_retorno - id do elemento que irá receber a informação de retorno
* html_exibe_carregando - Texto (ou imagem) que será exibido enquanto se carrega o upload
* html_erro_http - texto (ou imagem) que será exibido se der erro HTTP.
*******/

//testando se passou o ID ou o objeto mesmo
form = typeof(form)=="string"?$m(form):form;

var erro="";
if(form==null || typeof(form)=="undefined"){ erro += "O form passado no 1o parâmetro não existe na página.\n";}
else if(form.nodeName!="FORM"){ erro += "O form passado no 1o parâmetro da função não é um form.\n";}
if($m(id_elemento_retorno)==null){ erro += "O elemento passado no 3o parâmetro não existe na página.\n";}
if(erro.length>0) {
  alert("Erro ao chamar a função micoxUpload:\n" + erro);
  return;
}

//criando o iframe
var iframe = document.createElement("iframe");
iframe.setAttribute("id","micox-temp");
iframe.setAttribute("name","micox-temp");
iframe.setAttribute("width","0");
iframe.setAttribute("height","0");
iframe.setAttribute("border","0");
iframe.setAttribute("style","width: 0; height: 0; border: none;");
/* Não usei display:none pra esconder o iframe
    pois tem uma lenda que diz que o NS6 ignora
    iframes que tenham o display:none */

//adicionando ao documento
form.parentNode.appendChild(iframe);
window.frames['micox-temp'].name="micox-temp"; //ie sucks

//adicionando o evento ao carregar
var carregou = function() {
   removeEvent( $m('micox-temp'),"load", carregou);
   var cross = "java script: ";
   cross += "window.parent.$m('" + id_elemento_retorno + "').innerHTML = document.body.innerHTML; void(0); ";
  
   $m(id_elemento_retorno).innerHTML = html_erro_http;
   $m('micox-temp').src = cross;
   //deleta o iframe
   setTimeout(function(){ remove($m('micox-temp'))}, 250);
  }
addEvent( $m('micox-temp'),"load", carregou)

//setando propriedades do form
form.setAttribute("target","micox-temp");
form.setAttribute("action",url_action);
form.setAttribute("method","post");
form.setAttribute("enctype","multipart/form-data");
form.setAttribute("encoding","multipart/form-data");
//submetendo
form.submit();


//se for pra exibir alguma imagem ou texto enquanto carrega
if(html_exibe_carregando.length > 0){
  $m(id_elemento_retorno ).innerHTML = html_exibe_carregando;
}


}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Tenta colocar o input file dentro de um div, e atribua um width para esse div. Teóricamente o input deveria herdar esse width não expandindo.

Mas é meio estranho ele expandir desse jeito... Isso acontece no iExplorer E no FF?

Akeleabrasssss

Link para o comentário
Compartilhar em outros sites

  • 0
Tenta colocar o input file dentro de um div, e atribua um width para esse div. Teóricamente o input deveria herdar esse width não expandindo.

Mas é meio estranho ele expandir desse jeito... Isso acontece no iExplorer E no FF?

Akeleabrasssss

putz, KaKarotto... Se você tivesse postado antes, eu não tinha perdido o almoço tentando arruma isso... auhhuauhahuahuahuhuahuahu... mas a solução final foi essa mesmo... só q com uma coisinha a mais: overflow. Eu coloquei um overflow: auto; na div, e limitei o tamanho dela... Ae ficou certinho... Tava acontecendo no IE (sucks)...

ahuauhhuahuahuahuahuahu

Obrigado pela ajuda, cara...

abraçooooo

Editado por FeRRuGe
Link para o comentário
Compartilhar em outros sites

  • 0

hHihihihi se ferrooooo rsrsrsrs. Quando voltar pra casa você come mais :P

Beleza cara, então resolvido.

Seja Bem-vindo ao fórum o/

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...