Jump to content


Photo

Como Forçar Downloads?


  • Faça o login para participar
1 reply to this topic

#1 Martinsrj

Martinsrj

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 03/02/2010, 09:43

Consigo realizar o download das extensões DOC, XLS, porem as extensões ppt, pptm continua dando erro, pois além de não abrir no browser não permite o downloads.
        <% 
			i = 0
			do while not rs.eof
				i = 1 - i
		%>
        <tr class=gcpParImpar<%=i%> >
            <td valign="middle">							
				

				
	     'o link abaixo é o responsavel para direcionar para o arquivo desejado		  
             <a href='documentos/<%=rs.fields("nome")%>?arquivo=<%=rs.fields("nome")%>' target="_blank"><%=rs.fields("nome_orig")%></a>
				

				<!-- /background/html/teste/sistema/BAC54_arqareadocliente.asp, line 339 -->


			</td>
					
			<td>
				<% 
				'29/01/2010 - atenção, a variavel arquivo declarado no link acima não recebe o nome do arquivo
				'Response.Write arquivo & "Imprimindo o arquivo"
				'Response.End()
				'cria o objeto Scripting.FileSystemObject e atribui a variável objFSO
				Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
				
				'pega o caminho e características da pasta "documentos" e atribui a objFolder
				Set objFolder = objFSO.GetFolder(Server.MapPath("documentos"))
				
				'Escreve no navegador o caminho completo da pasta (Ex: E:\inetpub\wwwdata\background\html\Teste\sistema\documentos
				'Response.write objFolder.Path
				
                'Response.Write objFolder.Size & "em byte" 'Retorna o tamanho total da pasta, incluindo todos os seus arquivos.
			    Set fc = objFolder.Files
			    totalArq = fc.count
				
				tamArq = Server.MapPath (".") & "\" & objFolder.Name 
				'Response.Write(tamArq)
				Set arqObj = objFSO.GetFile(tamArq&"\"&rs.fields("nome"))
				'Response.Write round(arqObj.Size / 1024) & " KB"
				'varDataUacesso = varDataUacesso & arqObj.DateLastAccessed
				
				'imprimo o nome do arquivo.
				'Response.write arqObj.Name
				'Response.write objFolder.Name &"\"& arqObj.Name
				
				
			if Request("arquivo") <> "" then								
				'--------------------------------------------------------------------------
				Response.Buffer = True
				Dim strFilePath, strFileSize, strFileName
				
				Const adTypeBinary = 2
				
				'strFilePath = "C:\ whatever the path is "
				strFilePath = objFolder.Path
				'strFileSize = ... the size of file .. optional
				strFileName = arqObj.Name
				
				Response.Clear
				
				'8*******************************8
				' Requires MDAC 2.5 to be stable
				' I recommend MDAC 2.6 or 2.7
				'8*******************************8
				'Response.AddHeader "Content-Type","application/x-msdownload"
				Response.AddHeader "Content-Disposition","attachment; filename="&rs.fields("nome_orig")
				Set objStream = Server.CreateObject("ADODB.Stream")
				objStream.Open
				'objStream.Type = adTypeBinary
'				Response.Write arquivo & "Imprimindo o arquivo"
'				Response.End()
				objStream.LoadFromFile strFilePath
				
				strFileType = lcase(Right(strFileName, 4))
				
				
				' Feel Free to Add Your Own Content-Types Here
				Select Case strFileType
				Case ".asf"
				ContentType = "video/x-ms-asf"
				Case ".avi"
				ContentType = "video/avi"
				Case ".doc"
				ContentType = "application/msword"
				case ".ppt", ".pps",".pptm"
				'ContentType = "application/mspowerpoint"
				'ContentType = "application/vnd.ms-powerpoint"
				ContentType = "application/x-powerpoint"	
				'Informação sobre forçar o downloads em arquivo .txt
				'http://www.plugmasters.com.br/forum/lofiversion/index.php/t8047.html
				Case ".txt" 
				ContentType = "text/plain"
				Case ".zip"
				ContentType = "application/zip"
				Case ".xls"
				ContentType = "application/vnd.ms-excel"
				Case ".gif"
				ContentType = "image/gif"
				Case ".jpg", "jpeg"
				ContentType = "image/jpeg"
	
				Case ".wav"
				ContentType = "audio/wav"
				Case ".mp3"
				ContentType = "audio/mpeg3"
				Case ".mpg", "mpeg"
				ContentType = "video/mpeg"
				Case ".rtf"
				ContentType = "application/rtf"
				Case ".htm", "html"
				ContentType = "text/html"
				Case ".asp"
				ContentType = "text/asp"
				Case ".pdf"
				ContentType = "application/pdf"
				

				Case Else
				'Handle All Other Files
				ContentType = "application/octet-stream"
				End Select
				
				'Response.AddHeader("Content-type: Application/Octet-stream")
				'Response.AddHeader "Content-Disposition", "attachment; filename="& rs.fields("nome_orig")
				Response.AddHeader "Content-Length", strFileSize
				' In a Perfect World, Your Client would also have UTF-8 as the default 
				' In Their Browser
				Response.Charset = "UTF-8"
				Response.ContentType = ContentType
				
				Response.BinaryWrite objStream.Read
				Response.Flush
				
				objStream.Close
				Set objStream = Nothing
				
				'------------------------------------------------------------------------------
			End if
Possuo essa tela onde o usuario clica para realizar o downloads:
Posted Image

E abaixo é o erro gerado quando o usuario clica no link: 2009 -ceg na imprensa-dezembro.pptm, porem se o usuario clicar no link: arquivo do word - teste.doc automaticamente aparece uma janelinha perguntando se eu quero abrir, salvar ou cancelar.
Posted Image

Desde já agradeço.

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 23/02/2010, 09:14

Tente adaptar a função do nosso colega, que se encontra neste tópico: Forçando Downloads Com Asp.
Ps: faça da busca sua melhor amiga, dá para encontra muita coisa interessante!!

Edição feita por: Renan L. Queiroz, 23/02/2010, 09:15.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq