Ir para conteúdo

POWERED BY:

Arquivado

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

Reason XP

Upload

Recommended Posts

Ola Pessoal!!!

E o seguinte... tenho um Upload sem componentes que esta funcionando tudo beleza... n ha de reclamar nada dele... mas ele faz upload de qualquer arquivo, eu kero limitar isso... eu so kero que os usuarios facam uploads somente de arquivos do formato: JPG, GIF e PING...

 

alguem poderia me ajudar????

ai vai o codigo abaixo!!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

upload_form2

 

<!-- #include file = "upload_funcoes.asp" --><%' Chamando Funções, que fazem o Upload funcionarbyteCount = Request.TotalBytesRequestBin = Request.BinaryRead(byteCount)Set UploadRequest = CreateObject("Scripting.Dictionary")BuildUploadRequest RequestBin' Recuperando os Dados Digitados ----------------------Nome = UploadRequest.Item("Nome").Item("Value")'email = UploadRequest.Item("email").Item("Value")'Nome=Upload.form("Nome")' Tipo de arquivo que esta sendo enviadotipo_foto = UploadRequest.Item("foto").Item("ContentType")' Caminho completo dos arquivos enviadoscaminho_foto = UploadRequest.Item("foto").Item("FileName")' Nome dos arquivos enviadosnome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))' Conteudo binario dos arquivos enviadosfoto = UploadRequest.Item("foto").Item("Value")' pasta onde as imagens serao guardadaspasta = Server.MapPath("Img/")nome_foto = "/"&nome_foto'nome_foto = nome_foto' pasta + nome dos arquivoscfoto = "Img/lojas" + nome_foto' Fazendo o Upload do arquivo selecionadoif foto <> "" thenSet ScriptObject = Server.CreateObject("Scripting.FileSystemObject")Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)For i = 1 to LenB(foto) MyFile.Write chr(AscB(MidB(foto,i,1)))NextMyFile.Closeend if
----------------------------------------------------

 

upload.asp

 

<%@LANGUAGE="VBSCRIPT"%><%Sub BuildUploadRequest(RequestBin)'Get the boundaryPosBeg = 1PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)boundaryPos = InstrB(1,RequestBin,boundary)'Get all data inside the boundariesDo until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))  'Members variable of objects are put in a dictionary object  Dim UploadControl  Set UploadControl = CreateObject("Scripting.Dictionary")  'Get an object name  Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))  Pos = InstrB(Pos,RequestBin,getByteString("name="))  PosBeg = Pos+6  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))  Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))  PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))  PosBound = InstrB(PosEnd,RequestBin,boundary)  'Test if object is of file type  If  PosFile<>0 AND (PosFile<PosBound) Then   'Get Filename, content-type and content of file   PosBeg = PosFile + 10   PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))   FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))   'Add filename to dictionary object   UploadControl.Add "FileName", FileName   Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))   PosBeg = Pos+14   PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))   'Add content-type to dictionary object   ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))   UploadControl.Add "ContentType",ContentType   'Get content of object   PosBeg = PosEnd+4   PosEnd = InstrB(PosBeg,RequestBin,boundary)-2   Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)   Else   'Get content of object   Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))   PosBeg = Pos+4   PosEnd = InstrB(PosBeg,RequestBin,boundary)-2   Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))  End If  'Add content to dictionary objectUploadControl.Add "Value" , Value   'Add dictionary object to main dictionaryUploadRequest.Add name, UploadControl   'Loop to next object  BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)LoopEnd Sub'String to byte string conversionFunction getByteString(StringStr)For i = 1 to Len(StringStr)  char = Mid(StringStr,i,1)getByteString = getByteString & chrB(AscB(char))NextEnd Function'Byte string to string conversionFunction getString(StringBin)getString =""For intCount = 1 to LenB(StringBin)getString = getString & chr(AscB(MidB(StringBin,intCount,1))) NextEnd Function%>
----------------------------------------------------

 

Upload_funcoes.asp

 

<%Sub BuildUploadRequest(RequestBin)on error resume nextPosBeg = 1PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))boundary = MidB(RequestBin, PosBeg, PosEnd - PosBeg)BoundaryPos = InStrB(1, RequestBin, boundary)Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--"))) Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") Pos = InStrB(BoundaryPos, RequestBin, getByteString("Content-Disposition")) Pos = InStrB(Pos, RequestBin, getByteString("name=")) PosBeg = Pos + 6 PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34))) Name = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) PosFile = InStrB(BoundaryPos, RequestBin, getByteString("filename=")) PosBound = InStrB(PosEnd, RequestBin, boundary) If PosFile <> 0 And (PosFile < PosBound) Then  PosBeg = PosFile + 10  PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))  FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))  UploadControl.Add "FileName", FileName  Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))  PosBeg = Pos + 14  PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))  ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))  UploadControl.Add "ContentType", ContentType  PosBeg = PosEnd + 4  PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2  Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg) Else  Pos = InStrB(Pos, RequestBin, getByteString(Chr(13)))  PosBeg = Pos + 4  PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2  Value = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg)) End If UploadControl.Add "Value", Value UploadRequest.Add Name, UploadControl BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)LoopEnd SubFunction getByteString(StringStr)For i = 1 To Len(StringStr) Char = Mid(StringStr, i, 1) getByteString = getByteString & ChrB(AscB(Char))NextEnd FunctionFunction getString(StringBin)getString = ""For intCount = 1 To LenB(StringBin) getString = getString & Chr(AscB(MidB(StringBin, intCount, 1)))NextEnd Function%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só testar a extensão dos arquivos antes de enviar para a função!Usa as funções de STRING para verificar se o nome do arquivo termina com JPG, GIF ou PNG, se não for nehum desses aborta o processo!!OK..!!?? T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, me parece um código retirado do nosso laboratório de scripts feito pelo colega Dark0. Lá tem uma maneira de verificar a extensão antes de fazer o upload com o uso de javascript

http://forum.imasters.com.br/index.php?s=&...st&p=425468

 

Caso queira verificar com asp a situação muda, primeiro o upload terá que ser feito, depois você pega o nome do arquivo, localiza o PONTO que separa a extensão e faz a leitura dos ultimos caracteres e monta uma estrutura de repetição pra verificar a extensão do arquivo pertence a algum item do array(extensões permitidas). Se não for permitido exclui o arquivo do servidor e retorna uma página de "erro"

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue a logica

extePerm= "gif,jpeg,jpg,bmp"	arquivo = split(UploadRequest.Item("arquivo").Item("FileName"),".")	exteArq = arquivo (ubound(arquivo))	exte = split(extePerm,",")		for i=0 to ubound(exte)		if trim(Lcase(exteArq)) = trim(exte(i)) then			'Adicionar o código FSO para excluir o arquivo não permitido			response.write("Extensão não permitida")			response.end		end if	next

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente, essa é a logica pra você pegar a extensão do arquvo que você upou e comparar com um array de extensões permitidas, você deve colocar nessa parte

' Tipo de arquivo que esta sendo enviado

Obviamente renomeando as variaveis e o NAME do campo File de acordo com seu codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola mais uma vez...cara valew pelo exemplo: tentei adaptar ele... funcionou...mas tem um porem... Ele esta funcionado totalmente pelo inverso! ou seja: se ele identificar os formatos "gif,jpeg,jpg,bmp" ele diz: Extensão não permitida. se eu fizer um upload com um arquivo q n seja "gif,jpeg,jpg,bmp" ele faz o Upload... entedeu??Olha se estou fazendo algo errado:nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))foto = UploadRequest.Item("foto").Item("Value")extePerm= "gif,jpeg,jpg,bmp"arquivo = split(UploadRequest.Item("foto").Item("FileName"),".")exteArq = arquivo (ubound(arquivo))exte = split(extePerm,",") for i=0 to ubound(exte)if trim(Lcase(exteArq)) = trim(exte(i)) then'Adicionar o código FSO para excluir o arquivo não permitidoresponse.write("Extensão não permitida")response.endend ifnextpasta = Server.MapPath("fotos_usuarios/"&nome_foto&"")if foto <> "" thenSet ScriptObject = Server.CreateObject("Scripting.FileSystemObject")Set MyFile = ScriptObject.CreateTextFile(pasta)For i = 1 to LenB(foto) MyFile.Write chr(AscB(MidB(foto,i,1)))NextMyFile.Closeend if...Agradeco-te!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, isso eu já havia mensionado acima

Caso queira verificar com asp a situação muda, primeiro o upload terá que ser feito, depois você pega o nome do arquivo, localiza o PONTO que separa a extensão e faz a leitura dos ultimos caracteres e monta uma estrutura de repetição pra verificar a extensão do arquivo pertence a algum item do array(extensões permitidas). Se não for permitido exclui o arquivo do servidor e retorna uma página de "erro"

Ou seja, pra verificar sem fazer o upload só se for usando componente ou se for com esse código utilizando javacript(tem no laboratório de scripts no mesmo tópico como fazer isso)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Jonathdj!!!!

achei!! mas onde eu adapto isso???? no form?? ou dentro do codigo do Upload?

<script>function verifica_extencao(){var extensoesOk = ",.gif,.jpg,.txt,.doc,.exe,.xls,.bat,.ppt,.zip,.rar,.iso,.ini,.dll";var extensao = "," + document.form1.arquivo.value.substr( document.form1.arquivo.value.length - 4 ).toLowerCase() + ",";if (document.form1.arquivo.value == ""){alert("O campo do caminho está vazio!!");return false;}else if( extensoesOk.indexOf( extensao.toLowerCase() ) == -1 ){alert( document.form1.arquivo.value + "\nNão possui uma extensão válida" );java script:location.reload();return false;}else{java script:tamanhos();}}function tamanhos(){tamanhoArqMax = 400000imagem=new Image();imagem.src=document.form1.arquivo.value;tamanho_imagem = imagem.fileSizeimg_tan = tamanho_imagemif (tamanho_imagem < 0){java script:tamanhos();return false;}else if (tamanho_imagem > tamanhoArqMax){alert("O tamanho do arquivo é muito grande ... "+tamanho_imagem+" Bytes!! \n Tamanho Máximo suportado : "+tamanhoArqMax+" Bytes \n São "+(tamanho_imagem-tamanhoArqMax)+" Bytes a Mais!");java script:location.reload();return false;}else{ return true; }}</script>

 

valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você trocou os parametroe onde temdocument.form1.arquivo.valuepara o nome do seuformulario e o nome do seu campo file?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim troquei e nada! olha como eu fiz:

 

<script>

function verifica_extencao()

{

var extensoesOk = ",.gif,.jpg,.txt,.doc,.exe,.xls,.bat,.ppt,.zip,.rar,.iso,.ini,.dll";

var extensao = "," + document.form1.arquivo.value.substr( document.form1.arquivo.value.length - 4 ).toLowerCase() + ",";

if (document.form1.arquivo.value == "")

{

alert("O campo do caminho está vazio!!");

return false;

}

else if( extensoesOk.indexOf( extensao.toLowerCase() ) == -1 )

{

alert( document.form1.arquivo.value + "\nNão possui uma extensão válida" );java script:location.reload();

return false;

}

else

{java script:tamanhos();}

}

 

function tamanhos()

{

tamanhoArqMax = 400000

imagem=new Image();

imagem.src=document.form1.arquivo.value;

tamanho_imagem = imagem.fileSize

img_tan = tamanho_imagem

if (tamanho_imagem < 0)

{

java script:tamanhos();

return false;

}

else if (tamanho_imagem > tamanhoArqMax)

{

alert("O tamanho do arquivo é muito grande ... "+tamanho_imagem+" Bytes!! \n Tamanho Máximo suportado : "+tamanhoArqMax+" Bytes \n São "+(tamanho_imagem-tamanhoArqMax)+" Bytes a Mais!");java script:location.reload();

return false;

}

else

{ return true; }

}

</script>

 

<form method="post" action="pagina.asp" name="form1">

 

<input type="file" name="arquivo" onsubmit="verifica_extencao();"><input type="submit" name="sub" value="OK">

 

</form>

 

Obs.: tentei com e sem o onsubmit="verifica_extencao();", mas n tive sucesso!! :(

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.