Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Link ad una Sub

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Link ad una Sub

    Ciao a tutti,
    scusate per il titolo un pò criptico, ma non sapevo come scriverlo.
    Spero inoltre di non scrivere stupidaggini, relative a questa mia richiesta.

    Vorrei collegare al click su un link, che rappresenta il nome di un file, il download forzato, che ho trovato su questo forum.

    Inserisco il seguente codice in testa alla pagina .asp

    Codice PHP:
       Private Sub DownloadFile(file)

         
    Dim strAbsFile
         Dim strFileExtension
         Dim objFSO
         Dim objFile
         Dim objStream

         strAbsFile 
    Server.MapPath(file)

         
    Set objFSO Server.CreateObject("Scripting.FileSystemObject")

         If 
    objFSO.FileExists(strAbsFileThen
           Set objFile 
    objFSO.GetFile(strAbsFile)

             
    Response.Clear
             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
               Response
    .CharSet "UTF-8"

               
    objStream.LoadFromFile(strAbsFile)

               
    Response.BinaryWrite(objStream.Read)
               
    objStream.Close
             Set objStream 
    Nothing
           Set objFile 
    Nothing
         End 
    If
         
    Set objFSO Nothing
       End Sub 
    e nel che costruisco vorrei scrivere un qualcosa del genere

    Ma mi restituisce errore in fase di compilazione.

    Immagino che ho scritto qualcosa di veramente osceno, ma non riesco a capire come e se è possibile fare un qualcosa del genere.

    E' possibile che l'unica soluzione sia quella di creare una pagina asp "esterna" (downforzato.asp) che contiene il codice che vi ho postato e a cui passo il nome del file?


    Ciao



  2. #2
    Oscenissimo direi...
    Che errore ti da?

    Ad ogni modo.
    TI faccio un esempio su come far eseguire del codice lato server mediante un link lato client.
    codice:
    Saluto
    pagina.asp
    codice:
    <%
    function saluto
    response.write "ciao"
    end function
    
    esegui = request.queryString("esegui")
    if esegui = "saluto" then
    saluto()
    end if
    %>

  3. #3
    metti il codice che hai trovato in un'altra pagina che chiamerai, che so, download.asp.

    il codice sarà PER TUTTA LA TUA PAGINA:

    codice:
    <%
    
    private sub downloadfile(file)
    
    ...
    
    end sub
    
    pathFile=request.querystring("path")
    
    if(len(trim(pathFile))>0 then call downloadFile(pathFile)
    
    %>
    e sul link:

    codice:
    clicca
    e cmq si, avevi scritto una cosa orribile perchè asp non interagisce con html essendo elaborato dal server PRIMA che appaia l'html nella pagina.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Domenix
    Oscenissimo direi...
    Che errore ti da?

    (...)
    ok, ok... potete anche eliminare il mio thread

    Grazie per le risposte

  5. #5
    Originariamente inviato da mosquito70
    ok, ok... potete anche eliminare il mio thread

    Grazie per le risposte
    perchè eliminarlo, serve come esempio per i posteri
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Chiudere la popup

    Ritorno alla richiesta di ieri, che sono riuscito a risolvere.
    Infatti ora la funzionalità, oltre ad eseguire il download forzato del file, esegue la ricerca se tale file esiste, attraverso la prima parte del nome del file, privo di estensione. Quest'ultima infatti non la conosco a priori e potrebbe essere di vario tipo (.doc, .zip,.pdf, etc...)

    Ora il problema è che non mi chiude la popup, quando termina il download.
    Chiaramente utilizzo la "window.close" di javascript, ma posto comunque in questa sezione perchè credo che il problema sia nel codice asp.

    Codice PHP:
    <%@ Language=VBScript %>

    <
    head>
    <
    TITLE>Ricerca bandi</TITLE>
    </
    head>

    <
    body style="background-color: #3B9C9C">
    <%

    Function 
    tipofile(nomefile)
        
    Dim vc_tipofile

        vc_tipofile 
    nomefile
        vc_tipofile 
    LCase(Right(vc_tipofileLen(vc_tipofile) - InStrRev(vc_tipofile".", -11)))

            
    ' verifico estensione del file .zip .word ecc
        Select Case vc_tipofile
            Case "doc"
                vc_tipofile = "doc"
            Case "dir"
                vc_tipofile = "dir"
            Case "htm", "html"
                vc_tipofile = "htm"
            Case "tif", "jpg" , "gif"
                vc_tipofile = "img"
            Case "txt"
                vc_tipofile = "txt"
            Case "pdf"
                vc_tipofile = "pdf"
            Case "zip"
                vc_tipofile = "zip"
            Case Else
                vc_tipofile = "misc"
        End Select

        tipofile = vc_tipofile

    End Function



    Private Sub DownloadFile(file)

      Dim strAbsFile
      Dim strFileExtension
      Dim objFSO
      Dim objFile
      Dim objStream

      strAbsFile = Server.MapPath(file)

      Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

      If objFSO.FileExists(strAbsFile) Then
        Set objFile = objFSO.GetFile(strAbsFile)

          Response.Clear
          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
            Response.CharSet = "UTF-8"

            objStream.LoadFromFile(strAbsFile)

            Response.BinaryWrite(objStream.Read)
            objStream.Close
          Set objStream = Nothing
        Set objFile = Nothing
      End If
      Set objFSO = Nothing
    End Sub

    ************************
    '  Recupero nome del file
    ************************

    NomeFile=request.querystring("nomefile")

    ' ************************
    Lista dei file nella dir
    ' limitata a 1 mese
    ************************

    OldDate DateAdd("m",-1,Date())

    ' Leggo il contenuto della directory e lo metto in un array
    Dim strPath   '
    Path directory di ricerca
    Dim objFSO    
    'Variabile FileSystemObject
    Dim objFolder '
    Variable directory
    Dim objItem   
    'Variable per il loop nel contenuto della directory

    strPath = "archivio/file/"

    Creo oggetto FSO
    Set objFSO 
    Server.CreateObject("Scripting.FileSystemObject")

    ' Creo un gestore per la directory
    Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))

    Carico il contenuto del percorso in una matrice
    Dim Listing 
    (99994)
    num 1
    For Each objItem In objFolder.Files
     FileDate 
    objItem.DateLastModified
     
    If IsDate(FileDateThen FileDate CDate(FileDate)
     If 
    FileDate OldDate Then
         Listing 
    (num1) = objItem.Name
         Listing 
    (num2) = objItem.Size
         Listing 
    (num3) = objItem.Type
         Listing 
    (num4) = objItem.Path
         num
    =num+1
     End 
    If
    Next

    num
    =num-1

    ' Fine, distruggo gli oggetti creati
    Set objItem = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing


    ************************
    '   Inserimento dell'array nel database
    ' ************************

    vc_flagtrovato="N"

    For a=1 to num
        nome_sporco=Listing(a,1)
        nome_pulito=UCase( Left(nome_sporco, Len(nome_sporco)-4 ) )
        dimKb = Int (Listing (a, 2)/1000)
        if nome_pulito=ucase(NomeFile) then
            i=i+1
            vc_flagtrovato="S"
                pathcompleto=strPath&nome_sporco
                Call DownloadFile(pathcompleto)
          end if
    Next
        if vc_flagtrovato="N" then
    %>
        <table>
        <tr>
            <td valign="top" class="testolista">
                 <font style="COLOR: #800000; FONT: bold 10px Verdana">
                 Attenzione!!!

                 Il file <font style="COLOR: #FFFFFF; FONT: bold 10px Verdana"><%=nomefile%></font> cercato non è presente.

                 Contattare gli uffici della XXX per maggiori dettagli.
                 </font>
             </td>
        </tr>
        </table>
        

        <center>
        <input type="button" style="font-family: verdana, tahoma, arial; color: #577596; font-size: 11px; border-style: solid; border-color: #577596; border-width: 1px; background: #E3EAF1" value="Chiudi" onClick="window.close()" class="campiform" onMouseOver="this.className='
    campiform2'" onmouseOut="this.className='campiform'">
        </center>
    <% end if %>
    </body> 
    Questo è il codice completo.

    Ho provato inserendo questo codice nei seguenti punti

    Caso 1)

    Codice PHP:
    ...
                
    Call DownloadFile(pathcompleto)
    <
    script>
    window.close();
    </script>
          end if
    ... 
    Caso 2)
    Codice PHP:
    ...
    <%else%>
    <
    script>
    window.close();
    </script>
    <% end if %>
    </body> 

    Ma rimane comunque aperta la popup, tra l'altro con sfondo bianco.

    Avete qualche suggerimento in proposito?

    Grazie
    ciao

  7. #7
    sinceramente non ho mai visto un sito che facesse fare il download forzato via popup e poi richiudesse la popup. e sicuramente non è un problema di asp
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Santino83_02
    sinceramente non ho mai visto un sito che facesse fare il download forzato via popup e poi richiudesse la popup. e sicuramente non è un problema di asp
    E' possibile essere reindirizzato sulla sezione Javascript oppure conviene aprire un nuovo thread?

    Grazie
    Ciao ciao

  9. #9
    Originariamente inviato da mosquito70
    E' possibile essere reindirizzato sulla sezione Javascript oppure conviene aprire un nuovo thread?

    Grazie
    Ciao ciao
    apri un nuovo topic chiedendo come è possibile intercettare la fine del download..cmq se il link lo punti direttamente alla pagina senza il _blank, dovrebbe scaricartelo lo stesso il file, probabilmente impostando correttamente il content-type della pagina
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Santino83_02
    apri un nuovo topic chiedendo come è possibile intercettare la fine del download..cmq se il link lo punti direttamente alla pagina senza il _blank, dovrebbe scaricartelo lo stesso il file, probabilmente impostando correttamente il content-type della pagina
    ok, grazie della dritta. Provo e vi faccio sapere.

    Ciao ciao

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.