Fórum WMO: Upload Sem Componente - Fórum WMO

Ir para

Página 1 de 1
  • Novo tópico
  • Responder
  • Ícone  Compartilhar

Upload Sem Componente

#1 Membro offline   dedindol 

  • Novato no fórum
  • Ícone
  • Grupo: Usuários
  • Posts: 3
  • Cadastrado: 16/05/2008
  • Sexo:Não informado
Pontos: 0
Neutral

Postou 16/05/2008, 11:10

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

<!--#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

<!--#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)

<%
' 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.
0

#2 Membro offline   thicomp 

  • 12 Horas
  • Ícone
  • Grupo: Usuários
  • Posts: 134
  • Cadastrado: 13/12/2005
  • Sexo:Não informado
Pontos: 0
Neutral

Postou 16/05/2008, 14:55

E aí cara, blz??
Eu acredito que o seu problema possa estar no envio do "button radio". O método "multipart/form-data" não faz a verificação de campos com o mesmo nome, como botões radio e checkbox. Já quebrei muito a cabeça com isso. O que vc pode fazer, e deixar um dos seus botões radio já selecionado e nao outra página vc faz a verificação...
Dá uma olhada e veja se o seu problema pode ser esse tb

Abçs
0

#3 Membro offline   dedindol 

  • Novato no fórum
  • Ícone
  • Grupo: Usuários
  • Posts: 3
  • Cadastrado: 16/05/2008
  • Sexo:Não informado
Pontos: 0
Neutral

Ícone  Postou 16/05/2008, 15:16

blz cara e vc?

então cara, o problema é que nao estou usando nenhum campo rário, uso apenas dois text e um file,

me disseram que o problema pode ser na declaração de uma classe que está faltando, mas nao faço ideia de como declarar uma classe e nem de que classe estão falando.

hehe...aí complica né...

se puder me ajudar, agradeço,

abraço cara...valeu
0

#4 Membro offline   thicomp 

  • 12 Horas
  • Ícone
  • Grupo: Usuários
  • Posts: 134
  • Cadastrado: 13/12/2005
  • Sexo:Não informado
Pontos: 0
Neutral

Postou 16/05/2008, 15:39

Ver postdedindol, em 16/05/2008, 15:16, disse:

blz cara e vc?

então cara, o problema é que nao estou usando nenhum campo rário, uso apenas dois text e um file,

me disseram que o problema pode ser na declaração de uma classe que está faltando, mas nao faço ideia de como declarar uma classe e nem de que classe estão falando.

hehe...aí complica né...

se puder me ajudar, agradeço,

abraço cara...valeu


Ops cara, desculpe, não é radio nao, é o select, no seu form...
Tenta deixar uma das opções ja selecionadas e no arquivo que será chamado vc faz a verificação.
Uma vez tive um problema com um campo radio, onde eu tinha dois campos radios, mas sem seleção. Quando o arquivo, enviado pelo "form" utilizando o "multipart/form-data", ele me retornava um erro, que não estou lembrando agora. Mas aí deixei um dos campos selecionados e o código funcionou normal... Sei la, tenta ver se pode ser isso esse problema...
Por causa do seu campo "select", ou seja, campos que contem mais de uma opção

Abçs
0

#5 Membro offline   dedindol 

  • Novato no fórum
  • Ícone
  • Grupo: Usuários
  • Posts: 3
  • Cadastrado: 16/05/2008
  • Sexo:Não informado
Pontos: 0
Neutral

Postou 19/05/2008, 09:50

Entao cara,

eu fiz o que vc falou,
coloquei o sim já selecionado, mas continua dando o mesmo erro.

nao faço ideia de como arrumar isso...hehe...ta complicado.

Se fizer ideia do que possa ser agora...agradeço...

valeu cara...abraços...

Galera,

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

encontrei um sisteminha aqui no forum no forum do imasters....

Ta disponibilizado para download no link abaixo:

http://forum.imaster...howtopic=245839

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

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

#6 Membro offline   Luka13 

  • Novato no fórum
  • Ícone
  • Grupo: Usuários
  • Posts: 24
  • Cadastrado: 01/06/2007
  • Sexo:Masculino
Pontos: 0
Neutral

Ícone  Postou 18/07/2008, 16:29

Oi... legal esse sistema!

Uso um outro codigo sem componente onde uma página faz o upload e depois exibe uma outra página com o nome do arquivo e a visualização dele.

Mas se eu mandar outro arquivo com o mesmo nome, ele substitui.
Quero saber como evitar isso... seja renomeando automaticamente o arquivo ou exibindo algum alerta.

:unsure:


Editado:
Consegui resolver o problema do nome.
Foi só adicionar hora e data no local certo do código... e funcionou.

Este post foi editado por Luka13: 18/07/2008, 16:30

0

Página 1 de 1
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)