Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

dedindol

[Resolvido] Upload sem componente

Recommended Posts

E ae galera do asp,

To tentando fazer um formulário que contém um campo pra upload sem utilizar um componente, pois sou iniciante e me perdi no uso do componente...hehe

 

o problema é o seguinte.... quando preciono Ok para enviar os dados, dá o seguinte erro:

 

Microsoft VBScript runtime error '800a01a8'

 

Object required: 'UploadRequest.Item(...)'

 

/novo/adm/upload.asp, line 113

 

 

A linha 113 está abaixo:

 

112---- - 'Caminho original do arquivo.

113----- filepathname = UploadRequest.Item(Campo).Item("FileName")

 

Minhas páginas são essas aí:

Incluinoticia.asp - que contém o formulário

 

CODE

<!--#Include file="upload.asp"-->

 

<link href="inc/estilo.css" rel="stylesheet" type="text/css">

 

<script>

function vazio(){

 

var titulo = document.form.titulo.value;

var chamada = document.form.chamada.value;

var conteudo = document.form.conteudo.value;

 

if(titulo == ""){

alert("Informe o Titulo da notícia");

document.form.titulo.focus();

return false;

}

 

if(chamada == ""){

alert("Digite a Chamada da notícia");

document.form.chamada.focus();

return false;

}

 

if(conteudo == ""){

alert("Digite o Conteudo da notícia");

document.form.conteudo.focus();

return false;

}

 

}

</script>

 

<form name="form" id="form" method="post" action="incluinoticiafinal.asp" onsubmit="return vazio()" enctype="multipart/form-data">

<table border="0" align="left" width="330">

<tr>

<td align="right" valign="top" class="caixa_texto">Título:</td>

<td><input name="titulo" type="text" class="caixa_texto" size="63" maxlength="255" /></td>

</tr>

 

<tr>

<td align="right" valign="top" class="caixa_texto">Chamada:</td>

<td><input name="chamada" type="text" class="caixa_texto" size="63" maxlength="255" /></td>

</tr>

<tr>

<td align="right" valign="top" class="caixa_texto">Conteudo:</td>

<td><textarea name="conteudo" cols="62" rows="14" class="caixa_texto"></textarea></td>

</tr>

<tr>

<td align="right" valign="top" class="caixa_texto">Imagem:</td>

<td><input name="file" type="file" class="caixa_texto" id="file" /></td>

</tr>

<tr>

<td align="right" valign="top" class="caixa_texto">Habilitar:</td>

<td><select name="ativa" class="caixa_texto">

<option value="s">Sim</option>

<option value="n">Não</option>

</select></td>

</tr>

<tr>

<td colspan="2" align="right">

<input type="submit" class="caixa_texto" value="Incluir Notícia" /> </td>

</tr>

</table>

</form>

 

 

incluinoticiafinal.asp - que faz o upload e envia os dados para o bd

 

CODE

<!--#Include File="session.asp"-->

<!--#Include File="conexao.asp"-->

<!--#Include file="upload.asp"-->

 

<link href="inc/estilo.css" rel="stylesheet" type="text/css">

 

<%

Set upload_ReadRequest

 

dim Titulo, Conteudo, Ativa

 

Titulo = uRequest("titulo")

Chamada = uRequest("chamada")

Conteudo = uRequest("conteudo")

Ativa = uRequest("ativa")

 

If Ativa = "s" Then

Ativa = "1"

Else

ativa = "0"

End If

 

'ABRIR A CONEXÃO

Call AbreConn()

 

'Salva o arquivo

upload_SalvaArquivo "imagem", Server.MapPath("/novo/uploads/") & _

imagem, imagem, "jpg"

 

 

' INSERIR AS NOTICIAS NO BANCO DE DADOS

sql = "INSERT INTO tbNoticia (titulo, chNoticia, vcNoticia, imagem, ynNoticia) " &_

"VALUES ('" & titulo & "', '" & chamada & "', '" & conteudo & "', '" & imagem & "', " & ativa & ")"

 

'EXECUTAR A INSTRUÇÃO NO BANCO DE DADOS

Conn.Execute(sql)

 

'FECHAR A CONEXÃO

Call FechaConn

 

%>

 

<div align="center" class="azul">

<%if ativa = "1" then%>

<%Response.Write("A notícia está disponível no site!")%><br><br>

<%else%>

<%Response.Write("A noticia foi incluída, mas não está disponível no site!")%><br><br>

<%end if%>

</div>

 

<!-- SCRIPT QUE APRESENTA UMA MENSAGEM DE NOTICIA GRAVADA COM SUCESSO E DIRECIONA PARA A PÁGINA QUE LISTA TODAS AS NOTÍCIAS -->

 

<script type="text/javascript">

alert("Notícia Inserida com Sucesso!");

window.location="noticias.asp";

</script>

 

E a upload.asp - que tem as rotinas para o upload (peguei pronta aqui no forum mesmo)

 

CODE

<%

' Author Philippe Collignon

' Email PhCollignon@email.com

' Modificado por Elcio Ferreira

 

Dim UploadRequest,filename

Set UploadRequest = CreateObject("Scripting.Dictionary")

 

Sub BuildUploadRequest(RequestBin)

'Get the boundary

PosBeg = 1

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))

boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

boundaryPos = InstrB(1,RequestBin,boundary)

'Get all data inside the boundaries

Do 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 object

UploadControl.Add "Value" , Value

'Add dictionary object to main dictionary

UploadRequest.Add name, UploadControl

'Loop to next object

BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)

Loop

End Sub

 

'String to byte string conversion

Function getByteString(StringStr)

For i = 1 to Len(StringStr)

char = Mid(StringStr,i,1)

getByteString = getByteString & chrB(AscB(char))

Next

End Function

 

'Byte string to string conversion

Function getString(StringBin)

getString =""

For intCount = 1 to LenB(StringBin)

getString = getString & chr(AscB(MidB(StringBin,intCount,1)))

Next

End Function

 

Function MontaTipo(strPath)

Dim intpos

intpos = InStrRev(strPath, "\", Len(strPath) - 1)

MontaTipo = Mid(strPath, intpos + 1, Len(strPath) - intpos - 1)

End Function

 

'Preenche o dicionário UploadRequest para que se possa

'ler os campos através dele.

Function upload_ReadRequest

Response.Expires=0

Response.Buffer = TRUE

Response.Clear

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)

BuildUploadRequest RequestBin

End Function

 

'Salva um arquivo por upload em caminho se for de um dos

'tipos em ExtensoesPermitidas (string no formato

'"jpg,jpeg,gif")

'Para salvar com o mesmo nome do envio, passe uma String

'vazia para nome.

Function upload_SalvaArquivo(Campo,Caminho,Nome,ExtensoesPermitidas)

 

'Segurança (bastante óbvio, não?)

EstensoesProibidas=",exe,asp,php,sql,bat,pif,ocx,dll,aspx,shtml,"

ExtensoesPermitidas="," & ExtensoesPermitidas & ","

 

'Onde salvar

strPath = Caminho

if right(strPath,1)<>"\" then

strPath=strPath&"\"

end if

 

'Caminho original do arquivo.

filepathname = UploadRequest.Item(Campo).Item("FileName")

 

'Obtém a extensão

For i = Len(filepathname) To 1 Step -1

If Mid(filepathname, i, 1) = "." Then Exit For

Next

extensao = Right(filepathname, Len(filepathname) - i)

 

'Verifica se a extensão é dos tipos permitidos.

if ExtensoesPermitidas=",*," then

pode=(InStr(extensao,EstensoesProibidas)=0)

else

pode=(InStr(extensao,EstensoesPermitidas)>0)

end if

 

if pode then

 

'On Error Resume Next

 

value = UploadRequest.Item(Campo).Item("Value")

 

'Create FileSytemObject Component

Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

 

'Cria a pasta se ela não existir

if not ScriptObject.FolderExists(strPath) then ScriptObject.CreateFolder(strPath)

 

'Obtém o nome do arquivo a salvar

filename = Nome

if filename="" then

For i = Len(filepathname) To 1 Step -1

If Mid(filepathname, i, 1) = "\" Then Exit For

Next

filename = Right(filepathname, Len(filepathname) - i)

end if

 

'Create and Write to a File (WARNING: Overwrites existing!)

pathfilename = strPath & filename

Set MyFile = ScriptObject.CreateTextFile(pathfilename,true)

 

For i = 1 to LenB(value)

MyFile.Write chr(AscB(MidB(value,i,1)))

Next

 

MyFile.Close

 

' verificar se imagem foi enviada com sucesso.

if Err.number = 0 then

msgEnvio="Enviado com sucesso!"

else

msgEnvio="Ocorreu um erro no envio!"

end if

Err.Clear

else

msgEnvio="Extensão inválida!"

end if

 

upload_SalvaArquivo=msgEnvio

 

end function

 

function uRequest(n)

uRequest=""

if UploadRequest.Exists(n) then uRequest=UploadRequest.Item(n).Item("Value")

end function

 

%>

 

Alguém pode me ajudar a resolver esse probleminha?

 

Valeu.

Share this post


Link to post
Share on other sites

Você tem que declarar o objeto UploadRequest.

 

Se você estiver utilizando classe, você deve declará-la: Ex.: set UploadRequest = New nomeDaClasse

Share this post


Link to post
Share on other sites

Desculpa aí pessoal ter criado outro tópico com o mesmo assunto....eu achei que estava no forum wmoonline, pois eu ia postar lá tbm pois estou com muita urgencia em resolver isso e nao consigo sozinho..., acabei postando duas vezes aqui....

 

foi mal mesmo....

 

se alguém puder me ajudar... agradeço...

 

abraços

Share this post


Link to post
Share on other sites

Galera,

 

eu resolvi o problema de uma forma bem simples....hehe...

 

encontrei um sisteminha aqui no forum mesmo que faz exatamente o que eu preciso....

 

O silvaextreme colocou para download no link abaixo

 

http://forum.imasters.com.br/index.php?showtopic=245839

 

quem precisar fazer algum upload pode baixar esse aí que é animal...o cara é fera mesmo....

 

valeu pela ajuda ae...abraços...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.