Upload ASP sem componentes

Como fazer upload de arquivos no ASP sem usar componentes no servidor?

  1. Baixe esse arquivo: upload.asp.zip e descompacte em seu servidor. Eu costumo deixar arquivos como esse, que só contém funções genérica, na pasta /api no servidor, de onde eu posso fazer um include virtual em todas as aplicações em que precisar.
  2. O formulário tem que ser submetido de um jeito especial, assim <form action="arquivoquerecebeopost.asp" method="post" enctype="multipart/form-data">
  3. Na página que vai receber o post, você não pode usar Request() nem Request.Form(), apenas Request.QueryString().
  4. No começo da sua página, chame a função upload_ReadRequest
  5. Onde precisar ler os valores do formulário, use uRequest("nomedocampo")
  6. Para salvar o arquivo: upload_SalvaArquivo "nome_do_campo_file", "C:\Caminho\PodeUsarServerMapPathSeQuiser\", "nomedoarquivo.jpg", "jpg". O último parâmetro é uma lista das extensões permitidas (algo como “doc,txt,rtf,pdf”.)
  7. Se quiser obter o nome do arquivo, use UploadRequest.Item("nome_do_campo_file").Item("FileName"). Vem o caminho completo, você precisa tratar a string se quiser apenas o nome. Isso não é difícil, eu costumo fazer com split.

Exemplo de código.

Elcio: Elcio é sócio fundador da Visie Padrões Web. Pioneiro no uso e divulgação dos padrões do W3C no Brasil, Elcio já treinou equipes de dezenas de empresas como Globo.com, Terra, Petrobras, iG e Locaweb. Além disso, tem dirigido as equipes da Visie no desenvolvimento de projetos web para marcas como Brastemp, Itaú Unibanco, Johnson & Johnson e Rede Globo.

View Comments (48)

  • Olá, infelizmente o link de download do script não está ativo.
    Procuro a muito tempo um upload sem script. Grande abraço.

  • Se o dono do blog permitir, segue abaixo o código pra redimensionar as imagens enquanto você envia:

    Valeu.

  • Boa noite pessoal, primeiramente parabéns Rafael, muuuuito bom o código, faz muito tempo que procuro por uma solução como esta e graças ao seu código consegui resolver um problemaço.

    Galera, pra resolver o problema de MidB vocês tem que saber qual a versão do IIS que estão usando, em seguida vejam na internet como alterar o valor dos arquivos que podem ser enviados, no IIS 7, é muito fácil, se precisarem de ajuda pode me chamar por msn luizricardofc@msn.com.

    Este problema de MidB é pq o arquivo é muito grande para o que é permitido, eu já passei por isso e resolvi aumentando o tempo limite de script e também o tamanho do arquivo a ser enviado.

    Novamente obrigado.

  • O codigo funciona. Porém ao fazer o upload dos arquivos, os mesmos tem a extenção renomeada com um "M" no final. Tipo : "docM, txtM".

    O que será que está acontecedo ?

  • Excelente código, funcionou 100%. Fiz algumas alterações que achei importante para o controle da minha empresa. Com a sua solução, resolvi o problema de incompatibilidade do software AspUpload com o Windows 64 bits, quer dizer, não preciso mais dele. Parabéns e muito sucesso.

  • Acho que o pessoal esta leigo demais por o codigo funciona direitinho, quero aproveitar é dizer o muito obrigado para o autor, nunca vi coisa tão simples e facil de usar. Sucesso!!!, queria saber se você tem outro que remenciona a foto automaticamente na pagina de resultado. quero dizer eu vou colocar o tamanho do quadro por exemplo 150 x 75, e a foto se ajustasse em ficar com distoção.

  • Pessoal, mais uma dica. Aqui o erro parou de acontecer depois que eu coloquei valor para a propriedade method do meu form (method="post").

  • Olá pessoal, já realizei todos os procedimentos acima e continuo com o memso erro da maioria aí:
    Erro de tempo de execução do Microsoft VBScript erro '800a0005'
    Chamada de procedimento ou argumento inválido: 'MidB'
    /comercialnorte/upload.asp, line 13

    Alguém já tem uma nova solução?
    Desde já agradeço.