Ir para conteúdo

POWERED BY:

Arquivado

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

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que declarar o objeto UploadRequest.

 

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

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.