Ir para conteúdo

POWERED BY:

Arquivado

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

Flyfree

[Resolvido] Forçar Download

Recommended Posts

Pessoal é o seguinte, uso o código abaixo para forçar o download de mp3, uso para não iniciar tocando quando os navegadores estão habilitados para isso.

 

Só que, está fazendo o download mas o arquivo vem corrompido e não funciona o mp3, vi outros posts, mas tô frito mesmo,

 

Abaixo está o código que uso na página chamada file.asp

 

<%
'É necessário passar o nome do arquivo no FORM
Dim Arquivo
Arquivo = Request.querystring("file")

Response.Buffer = True
Response.AddHeader "Content-Type","application/x-msdownload"
Response.AddHeader "Content-Disposition","attachment; filename=" & Arquivo
Response.Flush

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile Server.MapPath(arquivo)
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
Response.Flush
%>

 

Aqui vai na página onde chamo o link, o nome do mp3 está dentro do banco. o mp3 (arquivo) está na mesma pasta que a pagina file.asp.

 

HREF="file.asp?file=<%=rs("mp3")%>

 

Se alguém souber alguma coisa fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o caminho físico aqui!!

objStream.LoadFromFile Server.MapPath(arquivo)

e como vem de uma querystring o arquivo você faz a condição antes:

 

arquivo = "caminho_do_servidor/"&Request.QueryString("arquivo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ted k', valeu a dica, mas mp3 não baixa, será que meu servidor tá impedindo, porque local funciona normalmente, mas na net baixa porém não roda. Já coloquei caminho físico mesmo assim não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

O problema estava sendo que meu arquivo tem mais de 4 mb e os servidores oferecem por padrão apenas 4 mb de buffer para processamento de cada página.

 

Consegui o seguinte código que resolveu meu problema:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% 
   Response.Buffer = True

   v_file = Request.QueryString("File")
   If Request.QueryString("tipo") <> "" Then
	  v_path = Server.MapPath("../arquivos/" & Request.QueryString("tipo") & "/" & v_file)
   Else
	  v_path = Server.MapPath("../arquivos/" & v_file)
   End If

   Select Case LCase(Right(v_file, 4))
	  Case ".asf"
		 v_type = "video/x-ms-asf"
	  Case ".avi"
		 v_type = "video/avi"
	  Case ".doc"
		 v_type = "application/msword"
	  Case ".zip"
		 v_type = "application/zip"
	  Case ".xls"
		 v_type = "application/vnd.ms-excel"
	  Case ".gif"
		 v_type = "image/gif"
	  Case ".jpg", "jpeg"
		 v_type = "image/jpeg"
	  Case ".wav"
		 v_type = "audio/wav"
	  Case ".mp3"
		 v_type = "audio/mpeg3"
	  Case ".mpg", "mpeg", "mpga"
		 v_type = "video/mpeg"
	  Case ".rtf"
		 v_type = "application/rtf"
	  Case ".htm", "html"
		 v_type = "text/html"
	  Case ".asp"
		 v_type = "text/asp"
	  Case Else
		 v_type = "application/octet-stream"
   End Select

   Set objFso = Server.CreateObject("Scripting.FileSystemObject")
   If objFso.FileExists(v_path) Then
	  Set objFile = objFso.GetFile(v_path)
	  Response.Clear
	  Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
	  Response.AddHeader "Content-Length", objFile.Size
	  Response.ContentType = v_type

	  Set varBinario = Server.CreateObject("ADODB.Stream")
	  varBinario.Open
	  varBinario.Type = 1
	  Response.CharSet = "UTF-8"
	  varBinario.LoadFromFile(v_path)
	  Do Until varBinario.EOS
		 Response.BinaryWrite(varBinario.Read(3000))
		 Response.Flush
	  Loop
	  varBinario.Close
	  Set varBinario = Nothing
	  Set objFile = Nothing
   Else
	  Response.Clear
	  Response.Write("<p align='center'>Arquivo não localizado<br />Por favor, entre em contato com suporte.</p>")
	  Response.End()
   End If
   Set objFso = Nothing
%>

Com isso o limite é aumentado.

 

Valeu a ajuda Ted k' foi por ela que fui chegando onde precisava, até encontrar esse código.

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.