Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Usando Session Para Capturar Informações.


ibreak

Pergunta

Oi pessoal beleza...

É o seguinte... eu tenho uma página aonde tenho vários campos de texto que são preenchidos e no final eu seleciono uma foto para enviar. No momento em que a foto é enviada uma página captura usando session...

Está dando este erro:

O erro que está aparecendo é este:

Tipo de erro:

Objeto Request, ASP 0207 (0x80004005)

Não é possível usar a coleção Request.Form após chamar BinaryRead.

/news1/arquivos/adm/upload_form2.asp, line 10

Na linha 10 eu tenho isso:

SESSION ("titulo") = Request.form("titulo")

Eu li num post que sempre que uso o método de envio do formulário como enctype="multipart/form-data", não consigo recuperar dados do formulario com o request.Form

Diante disso eu gostaria de saber de que forma resolvo o problema...

Como tem que ser o meu formulário para que eu consiga recuperar as informações?

Obrigado.

Meu formulário atualmente está assim:

<!--#include file="cookies.asp" -->
<% 
'Criando variáveis
Dim rsTipos

set rsTipos=server.createobject("adodb.recordset")

'Esta SELECT irá selecionar todos os tipos de notícias
'Neste caso, será para colocarmos no formulário as opções de escolher o tipo da notícia
rsTipos.Open "SELECT * from noticias_tipo order by tipo", meubd

%>
<html>
<head>
<title>iMasters / ASP - Notícias</title>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="778" border="0" cellspacing="3" cellpadding="0">
  <tr valign="middle">
    <td height="70" colspan="3" bgcolor="fcfcfc"><font size="6" face="Arial, Helvetica, sans-serif">ADMINISTRATIVO
        - ASP NOT&Iacute;CIAS</font></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="f0f0f0"><font face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
    <td width="126" height="277" valign="top" bgcolor="#BFEFFF"><table width="100%" border="0" cellspacing="2" cellpadding="1">
      <tr>
        <td bgcolor="#FFFFFF"><a href="incluir.asp">
          <div align="center"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Incluir
                Not&iacute;cia</strong></font></div>
        </a></td>
      </tr>
    </table></td>
    <td width="600" valign="top"><blockquote>
      <p><font face="Arial, Helvetica, sans-serif"><strong><font size="4">
        Incluir not&iacute;cia</font></strong></font></p>
      <p><font size="2" face="Arial, Helvetica, sans-serif">Para incluir uma
        nova not&iacute;cia, preencha o formul&aacute;rio abaixo:</font></p>
      <form name="form1" enctype="multipart/form-data">
      <table border="0" align="center" cellpadding="0" cellspacing="3">
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">T&iacute;tulo:</font></div></td>
              <td><div align="left"><font face="Arial, Helvetica, sans-serif"><font size="2"> 
                  <input name="titulo" type="text" id="titulo" size="40">
                  </font></font></div></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Tipo:</font></div></td>
              <td><font size="2" face="Arial, Helvetica, sans-serif"> 
                <select name="tipo">
                <% while NOT rsTipos.EOF %>
                  <option value="<%=rsTipos("codtipo")%>"><%=rsTipos("tipo")%></option>
                  <%
            rsTipos.movenext
            wend
            %>
                </select>
                </font></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Chamada:</font></div></td>
              <td><font face="Arial, Helvetica, sans-serif"><font size="2"> 
                <textarea name="chamada" cols="40" id="chamada"></textarea>
                </font></font></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Conte&uacute;do:</font></div></td>
              <td><font face="Arial, Helvetica, sans-serif"><font size="2"> 
                <textarea name="conteudo" cols="40" rows="5" id="conteudo"></textarea>
                </font></font></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Data 
                  para expirar:</font></div></td>
              <td><font size="2" face="Arial, Helvetica, sans-serif"> 
                <input name="expira" type="text" id="expira">
                </font></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Foto:</font></div></td>
              <td><input type="file" name="foto" size="14"></td>
            </tr>
            <tr> 
              <td><div align="right"><font size="2" face="Arial, Helvetica, sans-serif">Destaque:</font></div></td>
              <td> <table width="100" border="0" cellspacing="0" cellpadding="1">
                  <tr> 
                    <td><font size="2" face="Arial, Helvetica, sans-serif"> 
                      <input type="radio" name="destaque" value="1">
                      </font></td>
                    <td><font size="2" face="Arial, Helvetica, sans-serif">Sim</font></td>
                    <td><font size="2" face="Arial, Helvetica, sans-serif"> 
                      <input name="destaque" type="radio" value="0" checked>
                      </font></td>
                    <td><font size="2" face="Arial, Helvetica, sans-serif">N&atilde;o</font></td>
                  </tr>
                </table></td>
            </tr>
            <tr> 
              <td colspan="2"><div align="right"> 
                  <input type=button value="Cadastrar" onclick="document.form1.action='upload_form2.asp?tipo='+document.form1.tipo.value;document.form1.submit()">
                  </div></td>
            </tr>
          </table>
      </form>
      <p>&nbsp;</p>
    </blockquote></td>
    <td width="40" bgcolor="#BFEFFF"><font face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="f0f0f0"><div align="right"><font color="#666666" size="2" face="Arial, Helvetica, sans-serif">ASP
    - Not&iacute;cias</font></div></td>
  </tr>
</table>
</body>
</html>

Eu tentei fazer algumas modificações, mas não consegui. Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

você postou a pagina anterior e não a que apresenta o erro ne?

então, quando você usa enctype="multipart/form-data" realmente o request.form não vai funcionar, um exemplo da forma a ser feita: (é só adaptar)

Set upload = Server.CreateObject ("Dundas.Upload.2")

arquivo = upload.Form("arquivo")

Link para o comentário
Compartilhar em outros sites

  • 0

Andrea obrigado por responder este post. Bem vamos lá...

Você deu um exemplo pra mim usar o Dundas, mas pelo que entendo não dá pra ao mesmo tempo fazer o upload da foto e das informações, ou dá? Tipo nesse meu sistema você preenche tudo mas primeiro envia a foto e em seguida as info são levadas para uma outra página e inseridas no DB.

De que forma você pode sugerir para eu criar de uma forma legal de enviar a foto para a notícia?

Abaixo estou postando o código da página que dá o erro...

Tenho encontrado muitas dificuldades pra enviar a foto para a notícia.

<!-- #include file = "upload_funcoes.asp" -->
<%
' Chamando Funções, que fazem o Upload funcionar
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
SESSION ("titulo") = Request.form("titulo")
SESSION ("tipo") = Request.form("tipo")
SESSION ("chamada") = Request.form("chamada")
SESSION ("conteudo") = Request.form("conteudo")
SESSION ("expira") = Request.form("expira")
data=day(now)&"/"&month(now)&"/"&year(now)
SESSION ("destaque") = Request.form("destaque")

' Tipo de arquivo que esta sendo enviado
tipo_foto = UploadRequest.Item("foto").Item("ContentType")

' Caminho completo dos arquivos enviados
caminho_foto = UploadRequest.Item("foto").Item("FileName")

' Nome dos arquivos enviados
nome_foto = Right(caminho_foto,Len(caminho_foto)-InstrRev(caminho_foto,"\"))

' Conteudo binario dos arquivos enviados
foto = UploadRequest.Item("foto").Item("Value")

' pasta onde as imagens serao guardadas
pasta = Server.MapPath("imagens/")
nome_foto = "/"&nome_foto

' pasta + nome dos arquivos
cfoto = "imagens/noticia" + nome_foto

' Fazendo o Upload do arquivo selecionado
if foto <> "" then
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(pasta & nome_foto)
For i = 1 to LenB(foto)
MyFile.Write chr(AscB(MidB(foto,i,1)))
Next
MyFile.Close
end if

' Conecta-se ao Banco de Dados
url_conexao = Server.MapPath("../bd/base.mdb")
set conexao = Server.CreateObject("ADODB.Connection")
conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao

'Faremos aqui a inserção de todos os dados digitados no form anterior
meubd.EXECUTE "INSERT INTO noticias (titulo, chamada, tipo, conteudo, expirar, data, destaque, foto) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&"','"&cfoto&")"

' Mostra Mensagem de Confirmação na Tela
Response.write "Dados Cadastrados com Sucesso!"

'Logo após a inserção dos dados, mostrará uma mensagem e voltará para a página principal.asp
response.write "<script>location = 'principal.asp';alert('Sua notícia foi cadastrada com sucesso!')</script>"
%>

Link para o comentário
Compartilhar em outros sites

  • 0

O Dundas foi só pra você entender o que eu estava dizendo, tenta fazer assim no seu:

Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin

' Recuperando os Dados Digitados ----------------------
SESSION ("titulo") = UploadRequest.form("titulo")
SESSION ("tipo") = UploadRequest.form("tipo")
SESSION ("chamada") = UploadRequest.form("chamada")
SESSION ("conteudo") = UploadRequest.form("conteudo")
SESSION ("expira") = UploadRequest.form("expira")
data=day(now)&"/"&month(now)&"/"&year(now)
SESSION ("destaque") = UploadRequest.form("destaque")

Veja se agora resgata as variaveis

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Andréi... mais uma vez muito obrigado pela sua ajuda...

Não deu certo, eu fiz exatamente como você recomendou... Testei localmente no IIS do Win XP...

Bem mediante a essa dificuldade usando Session eu fiz diferente... Eu criei uma área de texto de nome url e do lado um link enviar. Quando eu clico nele abre uma popup aonde eu procuro o arquivo que eu quero enviar e faço o upload. Acontece que está enviando o arquivo mas o nome do arquivo que foi enviado não é capturado pela caixa de texto da janéla principal...

Se puder ajudar agradeço...

Criei um novo post... veja:

http://scriptbrasil.com.br/forum/index.php?showtopic=75603

Obrigado...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...