25 de maio de 2008

Força Download com ASP

Developer | 8 Comentários »
por Ricardo José Corrêa

Alguns arquivos colocados para download são um suplício, pricipalmente aqueles que abrem diretamente no navegador com outros programas monstros por trás, exemplo: PDF e DOC.

Mas o que fazer? Deixar o arquivo compactado para download? Isso não é solução, é quebra galho.

Que tal um script em ASP que força o download de todos os arquivos?

É esse ai:

download.asp?arquivo=nomedoarquivo

<%
arquivo = request("arquivo")
Response.Buffer=true
On Error Resume Next
Dim tfm_downloadStream
Set tfm_downloadStream = Server.CreateObject("ADODB.Stream")
tfm_downloadStream.Type = 1
tfm_downloadStream.Open
tfm_downloadStream.LoadFromFile Server.Mappath(arquivo)
If Err.number = 0 Then
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename="+arquivo
Response.AddHeader "Content-Transfer-Encoding","binary"
Response.BinaryWrite tfm_downloadStream.Read
tfm_downloadStream.Close
Set tfm_downloadStream = Nothing
Response.End()
Else
tfm_downloadStream.Close
Set tfm_downloadStream = Nothing
Response.write("Arquivo não encontrado")
End If
%>

Leia também:

  1. Programa para comparar arquivos de texto (CSS, HTML, PHP etc)

Você pode deixar um comentário, ou trackback de seu próprio site.

8 comentários para “Força Download com ASP”

  1. Gil falou:

    Para onde o arquivo forçado e baixado?

  2. Douglas falou:

    Parabens!! Nota 10!
    Eu estava tentando desenvolver algo parecido mais não funcionava!!
    muiito obrigado!

  3. Ricardo José Corrêa falou:

    O arquivo vai para onde o usuário salvar, normal.

  4. Maximiliano falou:

    olá amigo, e como eu ativo esse script

  5. Maximiliano falou:

    olá, na realidade estou com dificuldade de dizer o caminho até o arquivo pois ele está em outro diretório

  6. Jeferson falou:

    Parabéns Ricardo, show de bola.

    Estou com uma missão aqui parecida com esta.
    Porém eu preciso fazer download de vários aquivos, que estão numa pasta.

    Eu gravo no banco de dados uma ref. (nome do arquivo) que está numa pasta específica no servidor.

    Com seu código, ele baixa o primeiro arquivo.

    O que eu gostaria de fazer é que ele fizesse o download completo (de toda a lista) sem que pedisse pra salvar (automático) e também de toda a lista.

    Pra isso eu incluí seu código dentro de um while mas mesmo assim só baixa o primeiro arquivo.

    Tens alguma dica em relação a isso?

    Abraço.

  7. Ricardo José Corrêa falou:

    Então, Jeferson, acho que nesse caso só compactando todos os arquivos num .zip, por exemplo. Nunca vi isso de baixar um monte de arquivos de uma vez.

  8. Josué falou:

    Ricardo… estou usando seu script em uma aplicação, porém elesó está funcionando com arquivos pequenos…

    se tento baixar um .zip com 13MB o arquivo baixa em um segundo e vem corropido.

    o que pode ser?

Deixe um comentário