Ir para conteúdo

POWERED BY:

Arquivado

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

Creedence

Link para arquivo

Recommended Posts

Pessoal,

Minha dúvida é a seguinte:

Temos no site algumas areas restritas. São páginas asp e arquivos para download.

Quando o usuario clica num link de pagina restrita, após verificar a senha direciona normalmente para a pagina em caso de login correto. Até aí nenhum problema.

O fato do cara saber o caminho completo da página não faz com que visualize a mesma por conta do script que checa se o login está ativo ou não.

Por outro lado, quando o usuario clica num link para arquivo, tudo bem, eu passo o codigo do arquivo na base, o sistema checa o login e direciona para o arquivo solicitado e na barra de endereço aparece o caminho completo do arquivo, ex:

http://www.meusite.com.br/arqsrestritos/nomedoarquivo.pdf .

Aí é que está meu problema. Caso outra pessoa tenha acesso a esse caminho completo, vai acessar o arquivo sem passar por senha nem nada.

Gostaria de uma orientação nesse sentido.

No link pra pagina asp tudo bem pois na pagina eu sempre verifico se está logado.

No link pro arquivo, no final vai sempre mostrar o caminho completo, o que permitiria um acesso indevido.

Não sei se conseguí passar com clareza a dúvida.

 

Obrigado,

Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi cara nunca tive esse precesso aqui complicado a coisa se eu souber de alguma coisa eu entro em contato mais ninguem respndeu teh agora deve ser f*** ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá creedence....Voce tem duas opções:1ªCrie um Iframe escondido (Width=0 Heidht=0), e quando for chamar o arquivo para Donwload, aponte (Target) para esse Iframe.Desta forma, o caminho da URL não vai aparecer "lá em cima".2ªExiste um classe do ADODB que se chama Stream.Nesta classe é possível abrir um arquivo em formato binário, o que possibilita a voce efetuar o Download sem mostrar o endereço, pois, com essa classe, abriremos o arquivo no server de forma binário e daremos um "Response.Binary", alterando o Content-Type faremos com que o navegador faça, automaticamente o Download do arquivo.Segue código de exemplo

Response.Buffer = True'======================='ALTERA O CONTENT-TYPE'=======================Response.ContentType = "application/octet-stream"'======================='CRIA O OBJETO ADODB.STREAM'=======================Set ObjStr = Server.CreateObject("ADODB.Stream")'======================='SETA PARA OBJETO BINÁRIO'=======================ObjStr.Type = 1 'Binary'======================='ABRE O OBJETO'=======================ObjStr.Open'======================='LE AS INFORMAÇÕES BINÁRIAS DO ARQUIVO'=======================ObjStr.LoadFromFile "C:\nome_do_arquivo.pdf"'======================='PASSA AS INFORMAÇÕES BINÁRIA PARA UMA VARIAVEL'=======================strBinary  = ObjStr.Read'======================='DESTROI O OBJETO'=======================ObjStr.CloseSet ObjStr = Nothing'======================='ESPIRRA O OBJETO NO NAVEGADOR'=======================Response.BinaryWrite  strBinaryResponse.End

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Marcelo,Gostaria antecipadamente de agradecer sua resposta com relação a minha dúvida.Estou tentando a 2 opção. Peguei o codigo para teste e apenas incluí o meu arquivo na busca. Está dando o seguinte erro:<font face="Arial" size=2><p>ADODB.Stream</font> <font face="Arial" size=2>error '800a0bba'</font><p><font face="Arial" size=2>File could not be opened.</font><p><font face="Arial" size=2>/testebinario.asp</font><font face="Arial" size=2>, line 26</font> A única linha que alterei no seu código é onde carrega o arquivo, direcionando para o meu:ObjStr.LoadFromFile Server.MapPath("artigo1.doc")Obrigado,Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei um response.write no server.mappath("artigo1.doc") e ele me mostra o caminho fisico do arquivo:D:\...\wwwroot\artigo1.docAlterei a linha do codigo para essa string e dá o mesmo erro:File could not be opened .Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu daria um jeito de colocar os arquivos em uma pasta privada, no mesmo nível em que está a pasta com os arquivos normais do site (tipo se faz com o banco de dados). Aí você consegue ter acesso aos arquivos através de links hospedados no teu servidor (../), mas não consegue acessá-los digitando a url.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz umas alterações no SCRIPT.

Tenta de novo

 

===Verifique eu crie uma variavel "ds_nome_arquivo"

 

<%Response.Buffer = True'======================='CRIA O OBJETO ADODB.STREAM'=======================Set ObjStr = Server.CreateObject("ADODB.Stream")Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")ds_nome_arquivo = "C:\aspMail.zip"'======================='SETA PARA OBJETO BINÁRIO'=======================ObjStr.Type = 1 'Binary'======================='ABRE O OBJETO'=======================ObjStr.Open'======================='VALIDA ARQUIVO'=======================if not ObjFso.FileExists(ds_nome_arquivo) then	Response.Write "Arquivo não encontrado"	Response.End	else	dsFileName = ObjFso.GetFile(ds_nome_arquivo).Name	dsFileSize = ObjFso.GetFile(ds_nome_arquivo).SizeEnd if'======================='LE AS INFORMAÇÕES BINÁRIAS DO ARQUIVO'=======================ObjStr.LoadFromFile ds_nome_arquivo'======================='PASSA AS INFORMAÇÕES BINÁRIA PARA UMA VARIAVEL'=======================strBinary  = ObjStr.Read'======================='DESTROI O OBJETO'=======================ObjStr.CloseSet ObjStr = NothingSet ObjFso = nothing'======================='ESPIRRA O OBJETO NO NAVEGADOR'======================='======================='ALTERA O CONTENT-TYPE'=======================Response.ContentType = "application/force-download"Response.AddHeader "Content-Disposition", "attachment;filename=" & dsFileNameResponse.AddHeader "Content-Length", dsFileSizeResponse.BinaryWrite strBinaryResponse.End%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Marcelo.Ontem não tive como dar sequencia e hoje por incrivel que pareça enviei a página novamente pro servidor carreguei-a e funcionou.Testei inclusive a outra opção do Iframe. Aparece a url abaixo quando está carregando o arquivo apenas. Na linha de endereços não aparece. MaravilhaSe voce me permite queria aproveitar e perguntar se no caso da primeira opção, ADODB.Stream vale apenas pra download ou tem alguma alteração que me permitiria abrir diretamente o arquivo (tipo word/excel) se eu quisesse.Antecipadamente agradeço,Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara.Não entendi sua pergunta, como assim, "apenas abrir o arquivo". Voce está se referindo em aparecer na tela ?Se for, basta alterar o Contenty-TypePara Word = "Application/MsWord"Para Excel = "Application/Vnd.Excel" ???..Esse aqui confirma depoisFalow !

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso Marcelo,Digamos que eu precise das duas situações:Fazer o download do arquivo ou mostrar ele na tela.Nos dois casos que não me apareça a url do arquivo.Pelo que percebi a utilização do adodb.stream seria mesmo pra download e não pra visualizar na tela o arquivo seja ele word, excel, adobe, etc ...Então a opção para download estaria resolvida.Obrigado,Creedence

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.