Ir para conteúdo

POWERED BY:

Arquivado

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

Adilson_Web_2007

erro no script para fazer download do arquivo

Recommended Posts

Olá pessoal eu criei um págima que faz upload e grava as informações no banco de dados. Até beleza, so que eu quero que quando o usuario clicar no link abra o arquivo, eu acho que tem que fazer o download, é isso? Alguém pode me ajudar por favor nessa dívida. Se precisar eu fiz um script mas deu esse erro:

 

 

ADODB.Stream erro '800a0bba'

 

Não foi possível abrir o arquivo.

 

/contratos/visualizaArquivo.asp, line 25

 

 

 

segue o sript

 

ASP
<%@LANGUAGE="VBSCRIPT"%>

 

Option explicit

%>

<!--#Include file="conexao/conexao.asp"-->

<%

response.expires=0

if not session("acesso") = "SIM" then

       'Redirecionamos para a Página de Login e informamos o erro   

      response.redirect("restrito.asp?erro=negado")

     

   else

dim conexaoDataBase,ConnString,sqlArquivo,rsArquivo,codigo_contrato,objStream,nome_a

quivo

codigo_contrato = trim(Request.QueryString("codigo_contrato"))

call abreConexao

sqlArquivo ="select * from nomearquivo where codigo_contrato='"&codigo_contrato&"' "

set  rsArquivo = conexaoDataBase.execute(sqlArquivo)

 

Const adTypeBinary = 1

Response.Clear

Set objStream = Server.CreateObject("ADODB.Stream")

objStream.Open

objStream.Type = adTypeBinary

'rem Caminho completo do arquivo para download

objStream.LoadFromFile rsArquivo("caminho_arquivo") &""& rsArquivo("nome_arquivo")

'rem Somente o nome do arquivo

nome_arquivo = rsArquivo("nome_arquivo")

Response.AddHeader "Content-Disposition", "attachment; filename="&nome_arquivo&".zip"

Response.AddHeader "Content-Length", objStream.size

Response.Charset = "UTF-8"

'rem O ContentType da extensão do arquivo **

Response.ContentType = "application/zip"

 

for i = 0 to objStream.size

i = i + 256000

Response.BinaryWrite(objStream.Read(i))

Response.Flush

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fim de um exemplo seu, esse acima eu mudei.

 

call abreconexaodim conexaoDataBase,ConnString,objUpload,objNextFile,caminho,codigo_contrato,nome_aruivo,sql_insere,tab_inserecodigo_contrato = request.QueryString("codigo_cliente")Set objUpload = server.CreateObject("Dundas.Upload.2")objUpload.MaxFileSize = 1048576objUpload.UseUniqueNames = falseSet objNextFile = objUpload.GetNextFile()'Utilizamos o caminho virtual que determina onde serão salvos os arquivos carregados.caminho = "C:\Inetpub\wwwroot\contratos\Arquivos"If objUpload.FileExists(caminho & "\" & objNextFile.FileName) Then%><script language="javascript">window.alert('O arquivo já se encontra em nossa base de dados!');window.close();//window.location.href="../default.asp"; </script><% Else objNextFile.Save caminho'response.write("INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')")'response.endsql_insere = "INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')"conexaoDataBase.execute(sql_insere)%><script language="javascript">window.alert('Arquivo salvo com sucesso');window.close();//window.location.href="../cartoes_virtuais.asp"; </script><%End IfSet objUpload = Nothing

e para resgatar o conteúdo eu fiz assim, ta certo?

 

<table width="100%" border="0" align="center"><% if rsArquivo.eof then%><script>alert("Não exite nenhum arquivo!");window.close();</script><%else%><tr bgcolor="#DEDFDE" class="style1"><td width="91%" class="style2"><div align="center">Visualizar Arquivo(s)</div></td></tr><%do while not rsArquivo.eof%><tr bgcolor="#DEDFDE"><td><a href="<%= rsArquivo("caminho_arquivo")%>"><%=rsArquivo("nome_arquivo")%></a></td></tr><%rsArquivo.movenextloopend if%></table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade eu estou usando o xp, mas ira para o 2003. O meu problema é o seguinte eu insrio o upload e o nome do arquivo e o cominho no banco de dados. Eu quero que quando o usuario clicar no link abra o arquivo como eu faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar uma página(popup) contendo esse código que ao abrir o popup automaticamente será feita a tentativa de download. Se você tiver apenas um arquivo na página não precisa de popup, basta colocar esse código na pasta e criar o link do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu dei um response.write no link e apareceu assim: to achando estranho

 

C:InetpubwwwrootcontratosArquivos\compra e venda.doc

 

Meu link

 

<a href="<%=caminho&"&"&nome%>"><%=rsArquivo("nome_arquivo")%></a></td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fi como você falou.

 

Eu fiz assim:<td><a href="caminho&"\"&nome"><%=rsArquivo("nome_arquivo")%></a></td>

Mas deu esse erro:

 

HTTP/1.1 404 Object Not Found. Ai eu dei um response.write, e apareceu assim:

C:InetpubwwwrootcontratosArquivos\copia word.txt

 

O engracado que ele ao salvar o caminho ta tirando as barras, tem como consetar isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vixe, que doideira, eu tenho o mesmo script e não acontece isso :huh:

 

faz esse esquema aqui quando for salvar

 

 

ASP
CaminhoFinal = Replace(caminho, "C:InetpubwwwrootcontratosArquivos", "C:InetpubwwwrootcontratosArquivos")

objNextFile.Save CaminhoFinal

 

Usando "POG" :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz o que você disse deu o memso erro.

 

segue o código:

 

call abreconexaodim conexaoDataBase,ConnString,objUpload,objNextFile,caminho,codigo_contrato,nome_aruivo,sql_insere,tab_insere,CaminhoFinalcodigo_contrato = request.QueryString("codigo_cliente")Set objUpload = server.CreateObject("Dundas.Upload.2")objUpload.MaxFileSize = 1048576objUpload.UseUniqueNames = falseSet objNextFile = objUpload.GetNextFile()'Utilizamos o caminho virtual que determina onde serão salvos os arquivos carregados.caminho = "C:\Inetpub\wwwroot\contratos\Arquivos"If objUpload.FileExists(caminho & "\" & objNextFile.FileName) Then%><script language="javascript">window.alert('O arquivo já se encontra em nossa base de dados!');window.close();//window.location.href="../default.asp"; </script><% ElseCaminhoFinal = Replace(caminho, "C:InetpubwwwrootcontratosArquivos", "C:InetpubwwwrootcontratosArquivos")objNextFile.Save CaminhoFinal sql_insere = "INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')"conexaoDataBase.execute(sql_insere)%><script language="javascript">window.alert('Arquivo salvo com sucesso');window.close();</script><%End IfSet objUpload = Nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu entendi o que você falou e fiz mas contiua dando o mesmo erro:

 

call abreconexaodim conexaoDataBase,ConnString,objUpload,objNextFile,caminho,codigo_contrato,nome_aruivo,sql_insere,tab_insere,CaminhoFinalcodigo_contrato = request.QueryString("codigo_cliente")Set objUpload = server.CreateObject("Dundas.Upload.2")objUpload.MaxFileSize = 1048576objUpload.UseUniqueNames = falseSet objNextFile = objUpload.GetNextFile()'Utilizamos o caminho virtual que determina onde serão salvos os arquivos carregados.caminho = "C:\Inetpub\wwwroot\contratos\Arquivos"If objUpload.FileExists(caminho & "\" & objNextFile.FileName) Then%><script language="javascript">window.alert('O arquivo já se encontra em nossa base de dados!');window.close();//window.location.href="../default.asp"; </script><% ElseCaminhoFinal = Replace(caminho, "C:InetpubwwwrootcontratosArquivos", "C:Inetpub\wwwroot\contratos\Arquivos")objNextFile.Save CaminhoFinal 'objNextFile.Save caminho'response.write("INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')")'response.endsql_insere = "INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')"conexaoDataBase.execute(sql_insere)%><script language="javascript">window.alert('Arquivo salvo com sucesso');window.close();</script><%End IfSet objUpload = Nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque essa?

ASP
sql_insere = "INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& caminho &"' , '"&codigo_contrato&"')"

conexaoDataBase.execute(sql_insere)

 

por essa:

ASP
sql_insere = "INSERT INTO nomearquivo (nome_arquivo, caminho_arquivo, codigo_contrato) VALUES ('"& objNextFile.FileName &"', '"& CaminhoFinal &"' , '"&codigo_contrato&"')"

 

verifique essa linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei o que acontece quando eu gravo o arquivo beleza mas quando eu dou um response para visualizar o caminho para obrir o arquivio o caminho está assim: C:InetpubwwwrootcontratosArquivos\BIBLIOTECA.xlsHTTP/1.1 404 Object Not Found

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você grava o caminho no banco então tens que ver se está gravado certo(possivelmente não), então se estiver errado deve ao gravar o caminho fazxer um replace assimcaminho = "C:\inetpub\wwwroot"caminho = replace(caminho,"\","\\")

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.