Ir para conteúdo

POWERED BY:

Arquivado

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

Bene-Hur

ASP Upload

Recommended Posts

Olá pessoal. Eu tenho um site em asp onde as pessoas podem fazer upload. Mas eu quero determinar que elas possam fazer upload apenas de imagens do tipo Gif e Jpg com tamanho máximo de 500kb cada uma. Eu tenho todo o arquivo de upload pronto. É possivel inserir um código nesse mesmo arquivo Upload.asp para aceitar só os arquivos que eu escolher e tamanho?

 

me ajudem urgente. obrigado :wacko:

 

Código da página Upload.asp

 

<%

'--------------------------------------------------------------------------------------------------------------
'Criacao de Nome Unico
Dim NomeAleatorio
Function 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"
Randomize
Do While Len(NomeAleatorio) < 30
Num = chr_array(Int(35 * Rnd ))
NomeAleatorio = NomeAleatorio + Num 
Loop 
GerarNomeAleatorio = NomeAleatorio
End 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

	'String to byte string conversion
	Private Function CByteString(sString)
		Dim nIndex
		For nIndex = 1 to Len(sString)
		   CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
		Next
	End Function

	'Byte string to string conversion
	Private Function CWideString(bsString)
		Dim nIndex
		CWideString =""
		For nIndex = 1 to LenB(bsString)
		   CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
		Next
	End Function
End Class

Class 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 Sub

End Class
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai ter que enviar o arquivo e quando concluir testar, via FSO, se ele tem menos que o tamanho requerido, se não tem então deleta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada neste code, pode te ajudar

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<HTML>
<HEAD>
<TITLE>Upload</TITLE>
<style type="text/css">
<!--
.campo_alerta
{
font-family: Tahoma, Verdana, Arial;
font-size: 11px;
border: 1px solid black;
background-color: #cccccc;
}
.texto_pagina
{
font-family: Tahoma, Verdana, Arial;
font-size: 11px;
color: black;
}

.tabela_formulario
{
width: 200;
background-color: white;
}

.titulo_campos
{
font-family: Tahoma, Verdana, Arial;
font-size: 11px;
color: black;
background-color: white;
}

.campos_formulario
{
font-family: Tahoma, Verdana, Arial;
font-size: 11px;
color: dimgray;
background-color: whitesmoke;
border: 1px solid black;
}

.botao_enviar
{
font-family: Tahoma, Verdana, Arial;
font-size: 11px;
color: black;
background-color: gainsboro;
}
-->
</style>
<script language=javascript>
function envia_imagem(imagem) {
self.opener.recebe_imagem('<%=Request("campo")%>', imagem);
window.close();
}
</script>
</HEAD>
<BODY class="texto_pagina">

<%
Sub BuildUploadRequest(RequestBin)
    PosBeg = 1
    PosEnd = 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)
    Loop

End Sub

Function getByteString(StringStr)
For i = 1 to Len(StringStr)
    char = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(char))
Next
End Function

Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next
End Function

pasta_imagens = "imagens" & Request("pasta")

pasta = Server.URLEncode(Request("pasta"))
campo = Server.URLEncode(Request("campo"))

Set objFS = Server.CreateObject("Scripting.FileSystemObject")
If Not objFS.FolderExists(Server.MapPath(pasta_imagens)) Then
  objFS.CreateFolder(Server.MapPath(pasta_imagens))
End if

If Request("enviar") <> "" Then
  Set objFS = Nothing
  byteCount = Request.TotalBytes
  RequestBin = Request.BinaryRead(byteCount)
  Dim UploadRequest
  Set UploadRequest = CreateObject("Scripting.Dictionary")
  BuildUploadRequest  RequestBin
  contentType = UploadRequest.Item("blob").Item("ContentType")
  filepathname = UploadRequest.Item("blob").Item("FileName")
  filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

  value = UploadRequest.Item("blob").Item("Value")
If Lcase(Right(filename,3)) = "jpg" Or Lcase(Right(filename,3)) = "gif" then
    Set objFS = Server.CreateObject("Scripting.FileSystemObject")
'response.write(pasta_imagens & "\" & filename)
'response.end()
	
    If objFS.FileExists( Server.mappath(pasta_imagens & "\" & filename)) Then
%>

<script language=javascript>
alert("Erro ao enviar imagem, o arquivo '<%=filename%>' já existe na pasta '<%=pasta_imagens%>' do seu site")
enviar.disabled = false;
</script>

<%

    Else
      If LenB(value) > 200000 then

%>

<script language=javascript>
alert("Erro ao enviar a imagem, o tamanho do arquivo deve ser menor que 200Kb")
enviar.disabled = false;
</script>

<%
      Else
%>
<strong>Aguarde o envio da imagem...</strong><br>

<input name="progress" value="0% enviado" style="border:none">
<table width="100" border="0" cellspacing="0" cellpadding="0" style="border: 1px inset">
  <tr>
    <td><input name="barra" style="border:none; background-color: orangered; height: 10; width:1" readonly=""></td>
    <td></td>
  </tr>
</table>

<%
      Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
      Set MyFile = ScriptObject.CreateTextFile( Server.mappath(pasta_imagens & "\" & filename))
      progress = 0
      n = 0
      For i = 1 to LenB(value)
        MyFile.Write chr(AscB(MidB(value,i,1)))
        progress = Fix((i * 100) / LenB(value))
        If n <> progress then
          n = progress
%>

<script language=javascript>progress.value = "<%=n%>% enviado"</script>
<script language=javascript>barra.style.width = "<%=n%>"</script>

<%
        End if
      Next
      MyFile.Close
%>
<script language=javascript>
envia_imagem('<%=pasta_imagens & "/" & filename%>');
</script>

<%

    End If
    Set objFS = Nothing
  End if

Else
%>


<script language=javascript>
alert("Erro ao enviar a imagem, lembre-se que ela deve possuir extensão JPG ou GIF");
enviar.disabled = false;
</script>

<%
End If
End If
%>

<FORM METHOD="post" ENCTYPE="multipart/form-data" ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>?campo=<%=campo%>&pasta=<%=pasta%>&enviar=sim" onSubmit="enviar.disabled=true">
Enviar uma nova imagem<BR>
<INPUT type="file" name="blob" class="campos_formulario" style="width: 100%"><BR>
<INPUT type="submit" name="enviar" value="Enviar" class="botao_enviar"><br>
<i>(A imagem deve ter nó máximo 200Kb)</i>
</FORM>
Selecionar uma imagem enviada anteriormente<BR>
<DIV class="titulo_campos" style="width:100%; height:175px; visibility: visible; overflow: auto; border:1px solid">
<%
lista_imagens pasta_imagens, "gif,jpg"
Function lista_imagens( strFolder, tipo )
  If Trim( Request.QueryString("folder") ) <> "" Then
    strFolder = Request.ServerVariables("APPL_PHYSICAL_PATH") & Request.QueryString("folder")
  End If

  Dim Folder, File
  Dim ObjFS, objRootFolder
  Set ObjFS = Server.CreateObject("Scripting.FileSystemObject")
  Set objFolder = ObjFS.GetFolder(Server.MapPath(strFolder))
  For Each File in objFolder.files
    tipo = Replace(tipo, ",", "")
    For i = 1 to len(tipo) step 3
      If Right(File, 3) = Mid(tipo, i, 3) Then
        Response.Write "  <a href=""java script: envia_imagem('" & StrFolder& "/" & File.Name & "')"" class=""texto_pagina"">" & File.Name & "</a><BR>" & vbcrlf
      End If
    Next
  Next
  
  Response.Write "</td></tr></table>" & vbcrlf
  
  Set objFolder = Nothing
  Set Folder = Nothing
End Function
%>
</DIV>
</BODY>
</HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara muito bom esse codigo que você deixou ai. Mas eu gostaria de usar esse mesmo que possuo, acontece que não sei onde acrescentar nem como acrescentar um codigo para determinar o tamanho e o tipo de arquivo. Encontrei esse script que tem o q preciso, mas se o usuário usar Firefox ele pode desativar javascript e fazer upload do que quiser http://forum.imasters.com.br/public/style_emoticons/default/upset.gif eu queria um código igual o q estah logo abaixo aqui só que em asp mesmo... eh possivel???

 

<script>
function verifica_extencao()
{
var extensoesOk = ",.gif,.jpg";
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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma procurada no laboratorio de script, k existe uma funcao para determinar o tamanho do arquivo, e o tipo você pode fazer um Lcase(Right(filename,3)), onde filename é o nome do seu arquivo, ex:

 

Lcase(Right(filename,3)) = "jpg" Or Lcase(Right(filename,3)) = "gif"

'este caso para ext. gif e jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma procurada no laboratorio de script, k existe uma funcao para determinar o tamanho do arquivo, e o tipo você pode fazer um Lcase(Right(filename,3)), onde filename é o nome do seu arquivo, ex:

 

Lcase(Right(filename,3)) = "jpg" Or Lcase(Right(filename,3)) = "gif"

'este caso para ext. gif e jpg

 

esse tal Lcase(Right(filename,3)) = "jpg" Or Lcase(Right(filename,3)) = "gif" onde devo inseri-lo? na página upload.asp ou na que está o formulário? como eh o codigo completo?

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.