Domingo, 6 de Outubro de 2024
Busca no site:
Ok
Home
Links
Soluções
Utilitários
Publicações
Curiosidades
Produtos
Diversões
Apps Android
Contato
Mapa do Site
Sobre Nós
©2024 CJDinfo®
Detalhe Solução
ASP: Upload de arquivo com função ASP
:
1) Crie uma página inicial para a escolha do arquivo a ser submetido conforme o exemplo abaixo:
2) Crie uma segunda página, que no exemplo seria upload.asp. Para efetivar o Upload, execute nela a função abaixo. Os comentários da função explicam como utilizá-la: '------------------------------------------------------------------- ' Salva o arquivo enviado no local especificado: ' Se TipoLocal=0 => Local deve ter Pathname completo do arquivo ' Se TipoLocal=1 => Local deve ter o diretório do arquivo. O Nome ' será o mesmo do arquivo enviado. ' Retorna: ' >0 = Comprimento do arquivo recebido. Upload Ok. ' -1 = Codificação inválida (Sem "multipart/form-data") ' -2 = Boundary não especificado ' -3 = Boundary não encontrado ' -4 = Filename inválido ' -5 = Dados inválidos '------------------------------------------------------------------- function SalvaArqUpload(TipoLocal, Local) dim DadosPost, DadosBin, Boundary, PosIni dim oFs, Arq, ArqDest dim i, f, s ' Aumenta o TimeOut para Grandes Arquivos: Server.ScriptTimeout = 3600 ' 1 Hora ' Verifica se codificação é "multipart/form-data": s = Request.ServerVariables("HTTP_CONTENT_TYPE") If InStr(s, "multipart/form-data") = 0 Then SalvaArqUpload = -1 exit function end if ' Carrega o campo "boundary": Boundary = "" i = InStr(s, "boundary=") if i > 0 then f = InStr(i + 9, s, ";") if f > 0 then Boundary = Trim(mid(s, i + 9, f - i - 9)) else Boundary = Trim(mid(s, i + 9)) end if else SalvaArqUpload = -2 exit function end if ' Recebe os dados enviados (Bruto): DadosPost = "" DadosBin = Request.BinaryRead(Request.TotalBytes) For i = 1 to LenB(DadosBin) DadosPost = DadosPost & Chr(AscB(MidB(DadosBin,i,1))) Next ' Procura início do Frame de dados: PosIni = InStr(DadosPost, Boundary) If PosIni = 0 then SalvaArqUpload = -3 exit function end if PosIni = PosIni + Len(Boundary) + 1 ' Monta o nome do Arquivo de Destino: ArqDest = Local if TipoLocal = 1 then ' Separa Nome do Arquivo: s = "" i = InStr(PosIni, DadosPost, "filename=") if i > 0 then f = InStr(i + 10, DadosPost, NL) s = mid(DadosPost, i + 10, f - i - 11) else SalvaArqUpload = -4 exit function end if i = InStrRev(s, "") if i = 0 then i = InStrRev(s, "/") end if if i > 0 then s = mid(s, i + 1) end if if right(ArqDest, 1) <> "" then ArqDest = ArqDest & "" end if ArqDest = ArqDest & s end if ' Separa os dados do arquivo: DadosArq = "" i = InStr(PosIni, DadosPost, NL & NL) if i > 0 then f = InStr(i + 4, DadosPost, Boundary) DadosArq = mid(DadosPost, i + 4, f - i - 8) else SalvaArqUpload = -5 exit function end if ' Grava arquivo: Set oFs = Server.CreateObject("Scripting.FileSystemObject") Set Arq = oFs.CreateTextFile(ArqDest, True) Arq.Write(DadosArq) Arq.Close Set oFs = Nothing ' Normaliza TimeOut e sai: Server.ScriptTimeout = 90 SalvaArqUpload = Len(DadosArq) end function 3) Comentários: Este processo feito com rotina ASP é extremamente lento e só é recomendado para arquivos pequenos, da ordem de 10 a 20KB no máximo, pois consome demais a CPU do servidor. O ideal para uploads é utilizar objetos específicos para isso.
¤ Links Relacionados:
- Veja todas as soluções do site
Gostou? Compartilhe ou comente:
Nome:
Email:
Comentário:
Retornar