Ir para conteúdo

POWERED BY:

Arquivado

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

nldj

Upload com função ASP para verificar extensão

Recommended Posts

Boa noite! Estou com dificuldades de fazer funcionar a função em ASP para verificação / validação da extensão. Todas as imagens que eu faço upload, se eu der um response.write ele escreve a extensão .tmp mesmo sendo jpg. Por isso cai na condição do response.redirect("UploadImagemMSGERRO.asp"). Funciona se eu não usar a função, porém da erro de ASP se eu tentar carregar um arquivo que não seja uma imagem.

 

O que eu estou fazendo de errado?

 

 

Set upl = Server.CreateObject("SoftArtisans.FileUp")

 

Function extensao(nmArquivo)

nmArquivo = split(nmArquivo,".")

extensao = nmArquivo(uBound(nmArquivo))

End Function

 

IF ucase(extensao(upl.form("txtArquivo1"))) = JPG OR ucase(extensao(upl.form("txtArquivo1"))) = JPEG OR ucase(extensao(upl.form("txtArquivo1"))) = GIF OR ucase(extensao(upl.form("txtArquivo1"))) = BMP THEN

response.redirect("UploadImagemMSGERRO.asp")

 

'###ENVIA A IMAGEM E FAZ O RESIZE - INICIO

upl.Path = "Caminho da Imagem"

upl.form("txtArquivo1").Save

upl.Form("txtArquivo1").SaveAs "Caminho da Imagem"

Set upl = Nothing

 

Set Jpeg = Server.CreateObject("Persits.Jpeg")

'Caminho da Imagem

Path = "Caminho da Imagem"

Jpeg.Open Path

'Especifica o tamanho da imagem

Jpeg.Width = 200

Jpeg.Height = 80

'Esse método é opcional, usado para melhorar o visual da imagem

Jpeg.Sharpen 1, 150

'Cria um thumbnail e o grava no caminho especificado

Jpeg.Save "Caminho da Imagem"

 

set Jpeg = nothing

 

response.redirect("UploadImagemMSG.asp")

 

else

 

response.redirect("UploadImagemMSGERRO.asp")

 

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele esta gerando algum erro ?

 

e dá uma olhada no lab. de script, que postei um code onde você pode limitar qual extensão será "upada".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado! Mas eu procurei e não achei o seu codigo...você poderia passá-lo aqui ou me falar com o link para eu acessar? Já não é a primeira vez que eu peço ajuda nesse forum e ninguém me responde.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo aceitando apenas imagens Gif e Jpg

 

<%@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

×

Informação importante

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