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.
Pergunta
RAFBRASIL
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.