Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Download forzato file

  1. #1

    Download forzato file

    Uso questo per forzare il download di file...
    codice:
    Dim download, filescar
    filescar = Request.QueryString("file")
    
    Set download = Server.CreateObject("ADODB.Stream") 
    
    download.Type = 1 
    download.Open 
    download.LoadFromFile Server.MapPath(filescar) 
    
    Response.AddHeader "Content-Disposition", "attachment; filename=" & filescar 
    Response.ContentType = "application/octet-stream" 
    Response.BinaryWrite download.read 
    
    download.Close 
    Set download = Nothing
    Funziona, ma se il file supera una certa dimensione (4Mb, più o meno), non riconosce il tipo di file e va in errore il download. In particolare ho provato con gli ZIP, con gli altri file non so. Come mai??
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  2. #2
    Beh, nessuno mi sa aiutare????
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  3. #3
    prova questo script...alla funzione gli passi il percorso del file che vuoi scaricare:

    codice:
    
    
      
    Private Sub DownloadFile(file)
      '--declare variables
      Dim strAbsFile
      Dim strFileExtension
      Dim objFSO
      Dim objFile
      Dim objStream
      '-- set absolute file location
      strAbsFile = Server.MapPath(file)
      '-- create FSO object to check if file exists and get properties
      Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
      '-- check to see if the file exists
      If objFSO.FileExists(strAbsFile) Then
        Set objFile = objFSO.GetFile(strAbsFile)
          '-- first clear the response, and then set the appropriate headers
          Response.Clear
          '-- the filename you give it will be the one that is shown
          '   to the users by default when they save
          Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
          Response.AddHeader "Content-Length", objFile.Size
          Response.ContentType = "application/octet-stream"
          Set objStream = Server.CreateObject("ADODB.Stream")
            objStream.Open
            '-- set as binary
            objStream.Type = 1
            Response.CharSet = "UTF-8"
            '-- load into the stream the file
            objStream.LoadFromFile(strAbsFile)
            '-- send the stream in the response
            Response.BinaryWrite(objStream.Read)
            objStream.Close
          Set objStream = Nothing
        Set objFile = Nothing
      End If
      Set objFSO = Nothing
    End Sub
    
    strPath="/public/nomefile.ext"
    
    Call DownloadFile(strPath)

  4. #4
    Come prima santino....
    Con file grandi (es. ZIP da 25Mb) non funziona!
    Mi si pianta sulla schermata di download (img allegata) e finisce così.

    AIUTOOOOO!
    :master:
    Immagini allegate Immagini allegate
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  5. #5
    m'avete proprio abbandonata....
    Sigh sigh sob sob....
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  6. #6
    Mica mi rassegno io....
    Qualche anima pia prima o poi salterà fuori!!....
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  7. #7
    Originariamente inviato da Picciola
    Mica mi rassegno io....
    Qualche anima pia prima o poi salterà fuori!!....
    a me è giunta voce che devi dividere il file in piu parti...però non ne ho idea quindi resto zitto

  8. #8
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    il problema che segnali assomiglia a quanto descritto qui:

    http://support.microsoft.com/default...b;en-us;826756

    When you use the Response.BinaryWrite method to send files that are greater than 20 megabytes (MB), the send operation fails after the data that is sent exceeds 20 MB.

    qui parla di una possibile soluzione via codice, nn so se funziona, dividendo l'invio nel buffer in parti invece che tutto in una volta (penso sia quello cui si riferiva santino83_11_04):

    http://classicasp.aspfaq.com/general...mime-type.html

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Picciola
    Mica mi rassegno io....
    Qualche anima pia prima o poi salterà fuori!!....
    l'anima pia è il buon santino
    anche io ho risolto il problema restituendo il file a pezzi (chunk-norris)
    codice:
    <%@ Language=VBScript %><%
    Response.Expires=0
    Response.Buffer=0
    Const CHUNK = 2048
    strFilePath = Server.MapPath(Request.QueryString("file"))
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    ' Controllo se esiste il file (qua si possono mettere altri controlli)
    if fso.FileExists(strFilePath) then
    	set objFile = fso.GetFile(strFilePath)
    	Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
    	Response.AddHeader "Content-Length", objFile.Size
    	Response.ContentType = "application/octet-stream"
    	Set objStream = Server.CreateObject("ADODB.Stream")
    	objStream.Open
    	objStream.Type = 1 ' adTypeBinary
    	objStream.LoadFromFile strFilePath
    	lSize = objStream.Size
    	lBlocks = 1
    	For lBlocks = lBlocks To lSize \ CHUNK
    	     If Response.IsClientConnected = False Then Exit For
    	     Response.BinaryWrite objStream.Read(CHUNK)
    	Next
    	lSize = lSize Mod CHUNK
    	If lSize > 0 And Response.IsClientConnected = True Then
    	Response.BinaryWrite objStream.Read(lSize)
    	End If
    	objStream.Close
    	Set objStream = Nothing
    else
    %><html><body onload="self.close()"></body></html><%
    end if%>

  10. #10
    Originariamente inviato da santino83_11_04
    prova questo script...alla funzione gli passi il percorso del file che vuoi scaricare:

    codice:
    Private Sub DownloadFile(file)
    (...........)
    End Sub
    
    strPath="/public/nomefile.ext"
    
    Call DownloadFile(strPath)
    ciao Santino
    ho provato questo tuo script
    e funziona, ma solo se il file si trova nella cartella cgi-bin !!!
    il mio sito è su Aruba, sai dirmi perchè?
    grazie
    Pino

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.