Jump to content


Photo

A Imagem Está Na Pasta Mas O Banco Tem O Caminho


  • Faça o login para participar
14 replies to this topic

#1 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 11:25

Olá, acho que teve ter vários post semelhantes ao meu, mas me desculpem pois não encontrei algo que me satisfaze-se então decidi postar minha dúvida, lá vai:
Tenho um form em envia as informações p/ o bd tipo nome, etc... e redireciona para outro form onde acontece o upload das imagens e funciona direitinho gravando na pasta certa, mas no bd não grava o caminho da imagem, então qndo chama a página as informações estão lá menos a imagem.Fico até sem jeito de perguntar isso mas, por favor me ajudem aí!

#2 Agente Linhares

Agente Linhares

    fuis...abraços!

  • Ex-Admins
  • 3138 posts
  • Sexo:Não informado
  • Localidade:Biritiba Mirim-SP

Posted 06/09/2005, 11:39

sem seu code nao tem nem jeito da gente tentar de ajudar.
deve ser coisa cimples..posta aí.
> Busca On-line - A Busca que faltava na Internet! - Cadastre-se!
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!

#3 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 11:56

Aí vai o código

<%

'Criando variáveis
Dim localbd, meubd

'Indicando local do Banco de dados
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb")

'Setando conexões
set meubd=server.createobject("adodb.connection")
meubd.Open localbd

'Declarando as variáveis que receberão os valores do form
dim titulo, chamada, tipo, conteudo, expira, data, destaque, fonte, autor

titulo=request.form("titulo")
chamada=request.form("chamada")
tipo=request.form("tipo")
conteudo=request.form("conteudo")
expira=request.form("expira")
data=day(now)&"/"&month(now)&"/"&year(now)
destaque=request.form("destaque")
fonte=request.form("fonte")
autor=request.form("autor")


'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, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')"

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

%>
Depois vem a inserefoto1 que é onde tem o outro fom e de pois vem o upload

<%

'este programa recebe infomações binárias de um formulário.

server.scripttimeout=10000
' é importante setar esta propriedade para um valor alto porque pode demorar um bom tempo para as informações trafegarem pela Internet entre o computador cliente e o computador Servidor. Como o ASP tem um tempo máximo para processar um Script, caso esta propriedade esteja baixa você corre o risco de ter um erro de Script Time Out na tela.

On Error Resume Next

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
' instanciando o componente aspSmartUpload.SmartUpload e setando algumas propriedades muito importantes:

' a propriedade abaixo indica que o componente só deve aceitar arquivos com as terminações indicadas. Isso é muito importante, do contrário um usuário malicioso poderia subir um script que apaga todos os arquivos de um HD e executá-lo no Servidor com resultados desastrosos como você pode imaginar. Impedir a entrada de arquivos BMP é outra boa idéia, eles são imensos e podem esgotar rapidamente o espaço de um HD.

mySmartUpload.AllowedFilesList = "jpg,gif"

' esta propriedade indica que cada arquivo deve ter no máximo 8000 bytes.
mySmartUpload.MaxFileSize = 8000

' esta propriedade indica que a soma dos arquivos deste upload não deve ultrapassar 50000.
mySmartUpload.TotalMaxFileSize = 50000

' executa o upload
mySmartUpload.Upload

' vamos agora escrever na tela as informações recebidas do Formulário

'response.write(mySmartUpload.form("nome"))
'response.write(mySmartUpload.form("telefone"))
'response.write(mySmartUpload.form("endereco"))

' repare que não estamos usando o Objeto Request para acessar as informações de um formulário. Como as informações estão em formato binário, devemos usar o componente AspSmartUpload e seu método chamado FORM.

' tratando a foto do Formulário

For each file In mySmartUpload.Files
    If not file.IsMissing Then
      file.SaveAs("../imagens/" & file.FileName)
    End If
Next

' o loop acima percorrerá todos os controles do tipo File, no nosso exemplo apenas um chamado "foto". O método SaveAs colocará o arquivo na pasta "/pessoas/fotos/" do Servidor.

' tratando eventuais erros

If Err.number>0 Then
    Response.Write("<p><br><br>Um dos seguintes erros aconteceu: você tentou subir um arquivo cuja terminação não é GIF nem JPG. Ou então a imagem que você subiu é maior que 8.000 bytes(8 kb. ). A operação foi cancelada. Por favor tente de novo. ")
    response.end
End If
Response.redirect "principal.asp"
' fim do programa.

%>


Aí qndo eu tento chamar a imagem na outra página ela não aparece eu chamo a imagem assim:

<img src="imagens/<%=rsNoticias("imagem")%>" border="0" align="left" hspace="8" vspace="2">


Obrigado

#4 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 13:17

É isso o que ocorre
Fiz um script para fazer o upload de ficheiros e registar seu nome na db, só que surge

um problema , como o form é "enctype="multipart/form-data"" ele faz o upload e não

regista na base de dados. Se tirar o "enctype="multipart/form-data"" ele regista na

base de dados e não faz o upload.

Alguem sabe explicar porque isso acontece????

#5 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 06/09/2005, 14:15

Pelo que eu pude ver, ele não insere nada no campo Imagem da Tabela Noticias. Veja:


meubd.EXECUTE "INSERT INTO noticias (titulo, chamada, tipo, conteudo, expirar, data, destaque, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')"

O que ele fez foi inserir estes registros e depois chamar a página que usa o componente para fazer o upload na pasta que esta no servidor

For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
End If
Next


Po isto quando vc chama rsNoticia("imagem"), ele não aparece nada. (y)

Edição feita por: Lengrat, 06/09/2005, 14:17.


#6 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 14:38

Está certo, mas mesmo assim não está está pegando o caminho, será que tenho que usar algo assim no upload
imagem = SmartUpload.form("imagem")???

#7 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 15:00

Dêem uma olhada no código da pagina em que não aparece a imagem

<%
Option Explicit

'Criando variáveis
Dim localbd, meubd, rsMenu, rsNoticias, rsOutras

'Indicando local do Banco de dados
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("bd/base.mdb")

'Setando conexões
set meubd=server.createobject("adodb.connection")
set rsMenu=server.createobject("adodb.recordset")
set rsNoticias=server.createobject("adodb.recordset")
set rsOutras=server.createobject("adodb.recordset")

meubd.Open localbd
'Esta SELECT irá selecionar todos os tipos de notícias
'Em nosso caso, iremos desenvolver um menu diretamente com os itens cadastrados
rsMenu.Open "SELECT * from noticias_tipo order by tipo", meubd

'Esta SELECT irá obter o registro que o codnoticia é igual ao enviado por querystring
rsNoticias.Open "SELECT * from noticias, noticias_tipo where codnoticia="& request.querystring("cod") &" and codtipo=noticias.tipo", meubd

'Agora selecionaremos todos os outros registros onde o tipo é igual ao da notícia selecionada
'porém o codnotícia seja diferente
'E com as mesmas condições feitas na SELECT da página principal
'A validação de data
rsOutras.Open "SELECT * from noticias where tipo="& rsNoticias("codtipo") &" and codnoticia<> "& rsNoticias("codnoticia") &" and day(expirar)>="& day(now) &" and month(expirar)>="& month(now) &" and year(expirar)>="& year(now) &" order by data desc", meubd

%>



#8 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 06/09/2005, 15:11

Em tese sim, só que se vc der um request ( imagem = SmartUpload.form("imagem") ), vc pegará o caminho todo la do formulario.. ou Seja, tooodo o caminho físico de onde está o arquivo. Daí vc teria que dar um jeito de quebrar toda essa string para obter unica e exclusivamente a string "imagem.jpg"

Ou então, se vc so faz um upload por vez, tente fazer isto para pegar o nome da imagem só:


For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
imagem= file.FileName
End If
Next

E depois vc faz o insert.
Cria uma conexao, cria um recordset, executa o sql

Set conexao=server.createobject("adodb.connection")
sql= "INSERT INTO noticias (imagem) values ('"&imagem&"')"
Set Rs = conexao.execute(sql)


Em teoria deve funcionar. ;)

Edição feita por: Lengrat, 06/09/2005, 15:32.


#9 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 06/09/2005, 15:23

Então...
Quando vc faz RsNoticias("imagem"), vc está tentando pegar o valor do campo imagem que deve estar vazio, e por isso nao aparece.

Observe como é montado o RsNoticias

'Esta SELECT irá obter o registro que o codnoticia é igual ao enviado por querystring
rsNoticias.Open "SELECT * from noticias, noticias_tipo where codnoticia="& request.querystring("cod") &" and codtipo=noticias.tipo", meubd

Ele está pegando todos os campos (SELECT) da tabela noticias onde( WHERE ) o campo "COD" é o valor do request.querystring("cod"). O Regiustro que tem o cod passado pelo request, deve estar com o campo imagem vazio.

checa isso la no banco.

#10 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 15:37

Isso mesmo o campo imagem está vazio, como corrijo isso?? Se não for incomodo?

#11 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 06/09/2005, 16:05

Vai no banco e coloque as imagens na mão, a priori.

Agora deixa eu entender... vc tem um formulario onde vc insere uma notícia e depois chama um outro formulario para inserir uma imagem referente a esta notícia, correto?

Se for isso, entao na pagina que vc inseriu a noticia vc nao mexe nela e na pagina que insere a imagem vc aletera

For each file In mySmartUpload.Files
      If not file.IsMissing Then
      file.SaveAs("../imagens/" & file.FileName)
End If
Next

para

For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("../imagens/" & file.FileName)
imagem= file.FileName
End If
Next

Com isso vc armazena na variavel imagem, o nome exato do arquivo que vai ser "uploadado".

Depois vc faz um Select para saber em qual "CodNoticia" ser inserido a imagem.
como em tese todo índice de tabela, na maioria das vezes, é um campo numérico, creio que codnoticia seja a chave da talela notícia e seja um número. Então eu uso a função max para pegar o valor do ultimo registro inserido sem ter o campo imagem preenchido, lembra?

'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, fonte, autor) values ('"&titulo&"','"&chamada&"',"&tipo&",'"&conteudo&"','"&expira&"','"&data&"',"&destaque&",'"&fonte&"','"&autor&"')"

Pra isso eu faço

Set conexao= server.createobject(adodab.connection)
Sql="Select max(codnoticia) from notícias"
Set Rs_Busca= conexao.execute(sql)

Armazena o valor em uma variavel

cod= Rs_Busca("codnoticia")

Depois vc insere a imagem no codnoticia adequado

sql2= "INSERT INTO noticias (imagem) values ('"&imagem&"') WHERE codnoticias='"&cod&"'"
Set Rs = conexao.execute(sql2)

;)

Edição feita por: Lengrat, 06/09/2005, 16:13.


#12 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 16:12

Correto é isso mesmo, vou testar o código agora, obrigado

#13 zeronarfa

zeronarfa

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado
  • Localidade:Jacareí

Posted 06/09/2005, 16:48

Deu o seguinte erro
ADODB.Recordset (0x800A0CC1)
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
/sistema_noticias/adm/gravaimagem.asp, line 11

<%
Set conexao= server.createobject("adodb.connection")
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb")

conexao.open localbd
Sql="Select max(codnoticia) from noticias"
Set Rs_Busca= conexao.execute(sql)

'Armazena o valor em uma variavel

cod= Rs_Busca("codnoticia")

'Depois vc insere a imagem no codnoticia que foi criado

sql2= "INSERT INTO noticias (imagem) values ('"&imagem&"') WHERE codnoticias='"&cod&"'"
Set Rs = conexao.execute(sql2)
%>

:rolleyes:

Edição feita por: zeronarfa, 08/09/2005, 08:34.


#14 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 06/09/2005, 17:07

Esquecemos de abrir a conexao.
Depois de criar ela no Set conexao,
em baixo vc coloca conexao.open

Set conexao= server.createobject("adodb.connection")
localbd="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../bd/base.mdb")

conexao.open localdb
Sql="Select max(codnoticia) from noticias"
Set Rs_Busca= conexao.execute(sql)


:lol:

Edição feita por: Lengrat, 06/09/2005, 17:13.


#15 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 06/09/2005, 17:18

Galera Mais Atenção, usem o botao editar no post, e EVITEM posts seguidos no mesmo Tópico !

REGRAS


[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq