Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rpessoa

Pago por com Upload Seguro

Recommended Posts

Oi pessoal!Eu possuo um codigo muito bom de um site de classificados.Com sistema de banners, maladireta, os usuarios se cadastram e fazem seus proprios anuncios, com opcao de escolher o plano que lhe agrada (destaquena pagina principal, destaque lateral ou destaque nas buscas).Mas meu problema e o seguinte:- Para o upload das fotos do anuncio, nao esta sendo usado nenhum componente, apenas o FSO, e funciona corretamente.Porem eu gostaria de fazer o seguinte:- Restringir o Upload por tamanho do arquivo, ex.: 250 kb- Restringir o Upload por extensao (apenas gif, jpg), ou pelo menos uma forma de renomear a extensao de qualquer arquivo que entre no servidor para .gif. A intencao disso eh evitar que usuarios mal intencionados enviem algum arquivo que nao seja imagem e consigam executa-lo.Caso alguem consiga me ajudar a resolver isso, eu prometo que com o codigo funcionando em maos, eu cedo ele inteirinho pra pessoa utiliza-lo como quiser.O arquivo Upload.asp esta abaixo:---------------------------------------<%'--------------------------------------------------------------------------------------------------------------'Criacao de Nome UnicoDim NomeAleatorioFunction GerarNomeAleatorio(Valores)Dim chr_Array(35)chr_array(0) = "0"chr_array(1) = "1"chr_array(2) = "2"chr_array(3) = "3"chr_array(4) = "4"chr_array(5) = "5"chr_array(6) = "6"chr_array(7) = "7"chr_array(8) = "8"chr_array(9) = "9"chr_array(10) = "a"chr_array(11) = "b"chr_array(12) = "c"chr_array(13) = "d"chr_array(14) = "e"chr_array(15) = "f"chr_array(16) = "g"chr_array(17) = "h"chr_array(18) = "i"chr_array(19) = "j"chr_array(20) = "k"chr_array(21) = "l"chr_array(22) = "m"chr_array(23) = "n"chr_array(24) = "o"chr_array(25) = "p"chr_array(26) = "q"chr_array(27) = "r"chr_array(28) = "s"chr_array(29) = "t"chr_array(30) = "u"chr_array(31) = "v"chr_array(32) = "w"chr_array(33) = "x"chr_array(34) = "y"chr_array(35) = "z"RandomizeDo While Len(NomeAleatorio) < 30Num = chr_array(Int(35 * Rnd ))NomeAleatorio = NomeAleatorio + Num Loop GerarNomeAleatorio = NomeAleatorioEnd Function'--------------------------------------------------------------------------------------------------------------------Class FileUploader Public Files Private mcolFormElem Private Sub Class_Initialize() Set Files = Server.CreateObject("Scripting.Dictionary") Set mcolFormElem = Server.CreateObject("Scripting.Dictionary") End Sub Private Sub Class_Terminate() If IsObject(Files) Then Files.RemoveAll() Set Files = Nothing End If If IsObject(mcolFormElem) Then mcolFormElem.RemoveAll() Set mcolFormElem = Nothing End If End Sub Public Property Get Form(sIndex) Form = "" If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex)) End Property Public Default Sub Upload() Dim biData, sInputName Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos Dim nPosFile, nPosBound biData = Request.BinaryRead(Request.TotalBytes) nPosBegin = 1 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) If (nPosEnd-nPosBegin) <= 0 Then Exit Sub vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin) nDataBoundPos = InstrB(1, biData, vDataBounds) Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--")) nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition")) nPos = InstrB(nPos, biData, CByteString("name=")) nPosBegin = nPos + 6 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename=")) nPosBound = InstrB(nPosEnd, biData, vDataBounds) If nPosFile <> 0 And nPosFile < nPosBound Then Dim oUploadFile, sFileName Set oUploadFile = New UploadedFile nPosBegin = nPosFile + 10 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) oUploadFile.FileName = "{" & GerarNomeAleatorio(30) & "}_" & Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\")) nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:")) nPosBegin = nPos + 14 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) nPosBegin = nPosEnd+4 nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin) If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile Else nPos = InstrB(nPos, biData, CByteString(Chr(13))) nPosBegin = nPos + 4 nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) End If nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds) Loop End Sub Private Function CByteString(sString) Dim nIndex For nIndex = 1 to Len(sString) CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1))) Next End Function Private Function CWideString(bsString) Dim nIndex CWideString ="" For nIndex = 1 to LenB(bsString) CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) Next End FunctionEnd ClassClass UploadedFile Public ContentType Public FileName Public FileData Public Property Get FileSize() FileSize = LenB(FileData) End Property Public Sub SaveToDisk(sPath) Dim oFS, oFile Dim nIndex If sPath = "" Or FileName = "" Then Exit Sub If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\" Set oFS = Server.CreateObject("Scripting.FileSystemObject") If Not oFS.FolderExists(sPath) Then Exit Sub Set oFile = oFS.CreateTextFile(sPath & FileName, True) For nIndex = 1 to LenB(FileData) oFile.Write Chr(AscB(MidB(FileData,nIndex,1))) Next oFile.Close End Sub Public Sub SaveToDatabase(ByRef oField) If LenB(FileData) = 0 Then Exit Sub If IsObject(oField) Then oField.AppendChunk FileData End If End SubEnd Class%>Rodrigo Pessoa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...

Não precisa me mandar o código não....

Troque isso

Set oFile = oFS.CreateTextFile(sPath & FileName, True)

por isso

permitido = "gif,jpg"ext = right(sPath & FileName,3)if Instr(1,permitido,ext) = 0 then   Err.Raise 1,"Erro - Formato Inválido"End ifif Lenb(FileData) > 4096 then  Err.Raise 1,"O Tamanho do arquivo excedeu o máximo permitido"End ifSet oFile = oFS.CreateTextFile(sPath & FileName, True)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.