Ir para conteúdo

POWERED BY:

Arquivado

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

raguiar

Visualizar imagem do bd sql server

Recommended Posts

Senhores, continuo com a minha saga com imagem, nunca pensei que salvar uma imagem e visualizar com asp fosse algo tão complicado, mais acredito que essa odisseia esteja chegando ao final, já consigo salvar no banco de dados,porem nao consigo vizualizar no pagina html.

 

Por isso postando todo os meu codigo aqui para ver se uma santo ou um programador do tipo mestre Yoda possa me ajudar

 

Desde ja agradeço a ajuda de todos..

 

Rubem

 

 

CREATE TABLE Imagens (
	CODIGO char(15)  NULL ,
	UNIDADE int NULL ,
	NOME varchar(80) NULL ,
	DESCRICAO nvarchar(255)  NULL ,
	FAMILIA int NULL ,
	UF char(2)  NULL ,
	IMAGEM image NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

 

default.asp

<!-- #include file = "upload_funcoes.asp" -->
<table>
	<form name="form1" action="upload.asp" method="post" enctype="multipart/form-data">
		<tr>
			<td>codigo:</td>
			<td><input type="text" name="cod" size="20"></td>
		</tr>
		
		<tr>
			<td>unidade:</td>
			<td><input type="text" name="unid" size="20"></td>
		</tr>
		
		<tr>
			<td>Nome:</td>
			<td><input type="text" name="nome" size="20"></td>
		</tr>
		
		<tr>
			<td>Descricao:</td>
			<td><input type="text" name="desc" size="20"></td>
		</tr>
		
		<tr>
			<td>Familia:</td>
			<td><input type="text" name="fam" size="20"></td>
		</tr>
		
		<tr>
			<td>Foto:</td>
			<td><input type="file" name="foto" size="14"></td>
		</tr>
		
		<tr>
			<td colspan="2">
			<input type="submit" name="submit" value="Enviar">
			</td>
		</tr>
	</form> 
</table>

 

upload.asp

<!-- #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 ----------------------
codigo	= UploadRequest.Item("cod").Item("Value")
unidade   = UploadRequest.Item("unid").Item("Value")
nome	  = UploadRequest.Item("nome").Item("Value")
descricao = UploadRequest.Item("desc").Item("Value")
familia   = UploadRequest.Item("fam").Item("Value")


' 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/lojas" + 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
Set Conexao = Server.CreateObject("adodb.connection")
Conexao.connectionstring = "Provider=SQLOLEDB.1;Password=sa@01;Persist Security Info=True;User ID=sa;Initial Catalog=teste;Data Source=SRV-Teste"
Conexao.open 

' Cadastra os dados no banco de dados
SQL = "insert into Imagens (CODIGO,UNIDADE, NOME, DESCRICAO, FAMILIA, IMAGEM) values  ('"& codigo &"','"& unidade &"','"& nome &"','"& descricao &"','"& familia &"', '"& cfoto &"')"

Set recordSet = Server.CreateObject("adodb.recordset")	
recordSet.open SQL,Conexao,3,2

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

' Redireciona após 5 segundos
response.write "<br><br>você será redirecionado em 5 segundos..<br>"
response.write "<meta http-equiv='refresh' content='5; url=index.html'/>"
%>

 

Upload_funcoes.asp

<%
' Upload Sem componentes ---------------------------------------
Sub BuildUploadRequest(RequestBin)
on error resume next

PosBeg	  = 1
PosEnd	  = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
boundary	= MidB(RequestBin, PosBeg, PosEnd - PosBeg)
BoundaryPos = InStrB(1, RequestBin, boundary)

Do Until (BoundaryPos = InStrB(RequestBin, boundary & getByteString("--")))

Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")

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)

If PosFile <> 0 And (PosFile < PosBound) Then
	PosBeg = PosFile + 10
	PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(34)))
	FileName = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
	UploadControl.Add "FileName", FileName
	Pos = InStrB(PosEnd, RequestBin, getByteString("Content-Type:"))
	PosBeg = Pos + 14
	PosEnd = InStrB(PosBeg, RequestBin, getByteString(Chr(13)))
	ContentType = getString(MidB(RequestBin, PosBeg, PosEnd - PosBeg))
	UploadControl.Add "ContentType", ContentType
	PosBeg = PosEnd + 4
	PosEnd = InStrB(PosBeg, RequestBin, boundary) - 2
	Value = MidB(RequestBin, PosBeg, PosEnd - PosBeg)
Else
	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
	UploadControl.Add "Value", Value
	UploadRequest.Add Name, UploadControl
	BoundaryPos = InStrB(BoundaryPos + LenB(boundary), RequestBin, boundary)
Loop
End Sub

Function getByteString(StringStr)
	For i = 1 To Len(StringStr)
		Char = Mid(StringStr, i, 1)
	getByteString = getByteString & ChrB(AscB(Char))
Next
End Function

Function getString(StringBin)
	getString = ""
	For intCount = 1 To LenB(StringBin)
		getString = getString & Chr(AscB(MidB(StringBin, intCount, 1)))
Next
End Function

' Fim upload sem Componentes -----------------------------------------
%>

 

 

 

imagem.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
   <%
   ' Clear out the existing HTTP header information
   option explicit
   dim rs,consulta
   Response.Expires = -1000
   Response.ExpiresAbsolute = 0
   Response.Buffer = true
   
   Response.Expires = 0
   Response.Buffer = TRUE
   Response.Clear
   
   ' Change the HTTP header to reflect that an image is being passed.
   Response.ContentType = "image/gif"

	
	' Conecta-se ao Banco de Dados
	Set Conexao = Server.CreateObject("adodb.connection")
	Conexao.connectionstring = "Provider=SQLOLEDB.1;Password=sa@01;Persist Security Info=True;User ID=sa;Initial Catalog=teste;Data Source=SRV-Teste"
	Conexao.open 
	

	
   ' The following open line assumes you have set up a System DataSource ' by the name of myDSN.
   'Remember to change the following connection string parameters to reflect the correct values
   'for your SQL server.
	set rs = server.createObject("adodb.recordset")
	consulta ="Select imagem from  imagens"
	rs.open consulta,Conexao
	
	response.write( consulta )
	response.end()
	
	
	Response.BinaryWrite rs("imagem")
	
	rs.close
	Conexao.close
	
	set rs = nothing
	set Conexao = nothing
   
   Response.End
   %>

 

 

index.html

<HTML>
   <HEAD><TITLE>Display Image</TITLE></HEAD>
   <BODY>
		Esta pagina ira mostrar uma imagem<BR>
		<IMG SRC="imagem.asp">
   </BODY>
</HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está salvando a imagem diretamente no BD? Se for isso a página que exibe as imagens não pode ter Response.Write, apenas o Response.BinayWrite.

 

Outra coisa, está apresentando algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está salvando a imagem diretamente no BD? Se for isso a página que exibe as imagens não pode ter Response.Write, apenas o Response.BinayWrite.

 

Outra coisa, está apresentando algum erro?

 

no arquivo imagem.asp tem o Response.BinaryWrite rs("imagem") porem nao aparece nada...ja fiz de tudo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passe um ID para recuperar uma imagem específica para que possamos verificar. O sistema está online?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remove isso

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
Remova isso

response.write( consulta )
	response.end()

Substitua o comando Response.BinaryWrite pelo o que segue abaixo

Verifique a "filename" é seguido do nome do arquivo, portanto, é preciso conhecer a extensão do arquivo.

Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment;filename=anexo." & extensao

Response.AddHeader "Content-Length", lenb(Rs("imagem"))
Response.BinaryWrite Rs("imagem")
Response.End

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remove isso

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
Remova isso

response.write( consulta )
	response.end()

Substitua o comando Response.BinaryWrite pelo o que segue abaixo

Verifique a "filename" é seguido do nome do arquivo, portanto, é preciso conhecer a extensão do arquivo.

Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment;filename=anexo." & extensao

Response.AddHeader "Content-Length", lenb(Rs("imagem"))
Response.BinaryWrite Rs("imagem")
Response.End

 

fiz como voce falaram e nada ainda

 

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

' Clear out the existing HTTP header information

option explicit

dim rs,consulta

Response.Expires = -1000

Response.ExpiresAbsolute = 0

Response.Buffer = true

 

Response.Expires = 0

Response.Buffer = TRUE

Response.Clear

 

' Conecta-se ao Banco de Dados

Set Conexao = Server.CreateObject("adodb.connection")

Conexao.connectionstring = "Provider=SQLOLEDB.1;Password=sa@01;Persist Security Info=True;User ID=sa;Initial Catalog=teste;Data Source=SRV-Teste"

Conexao.open

 

 

 

' The following open line assumes you have set up a System DataSource ' by the name of myDSN.

'Remember to change the following connection string parameters to reflect the correct values

'for your SQL server.

set rs = server.createObject("adodb.recordset")

consulta ="Select imagem from imagens"

rs.open consulta,Conexao

 

extensao = 'jpg'

Response.ContentType = "application/octet-stream"

Response.AddHeader "Content-Disposition", "attachment;filename=anexo." & extensao

 

Response.AddHeader "Content-Length", lenb(Rs("imagem"))

Response.BinaryWrite Rs("imagem")

 

rs.close

Conexao.close

 

set rs = nothing

set Conexao = nothing

 

Response.End

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passei pelo mesmo sofrimento, então vou postar aqui talvez possa ajudar alguem...

 

<%
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "Driver={SQL Server};Server=xxxxxxxx,1433;Database=xxxxx;Uid=xxxxx;Pwd=xxxx;"
%>



 



<html>
<head>
<title>Untitled Document</title>
</head>



 



<body>



 



<%
set rs01 = createobject("adodb.recordset")
set rs01.activeconnection = conn
rs01.CursorLocation = 3
rs01.CursorType = 2
rs01.LockType = 1 
rs01.open "SELECT TOP 1 Binario FROM programas ORDER BY evento DESC"
if not rs01.eof then



'-------------- Inclua estas 3 linhas -------------------'
response.Expires = 0
response.Buffer = TRUE
response.clear
'------------------------------------ -------------------'



Response.ContentType = "image/bmp"  
Response.BinaryWrite rs01("binario")
End If
%>



</body>



</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pelinçari,

 

Obrigado por compartilhar seu conhecimento conosco.

 

Continue contribuindo respondendo os tópicos mais recentes.

 

Abraços

 

Mário Monteiro

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.