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

Sistema De Upload Em Asp


RAFBRASIL

Pergunta

Olha consegui um tutorial completo para fazer um sisteminha de upload em www.cjdinfo.com.br, quem sabe não pode ser de valia.

Eu acho legal fazer o sistema ao invés de pegar um pronto, pois isso nos d´pa uma compreensão maior do mesmo e nos possibilita alterá-lo cf. nossas necessidades.

Ai vai o tutorial:

Upload de arquivo com função ASP

HTML/ASP - 07/11/2002

--------------------------------------------------------------------------------

1) Crie uma página inicial para a escolha do

arquivo a ser submetido conforme o exemplo abaixo:

<html>

<body>

<form method="POST" enctype="multipart/form-data" action="upload.asp">

<input type=file size=60 name="ArqLocal"><br>

<input type=submit value="Upload">

</form>

</body>

</html>

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.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...