• User

    inserire percorso pagine

    ciao, ho questo script che serve a nascondere l'indirizzo dei documenti pdf sul mio sito per evitare che questi possano essere chiamati direttamente senza login una volta che il percorso è noto. lo script funziona bene finchè si tratta di specificare il percorso di un solo doc. ma avendone circa trenta da far visionare non so come fare ad inserirli, considerando il fatto che risiedono in tre cartelle differenti, qualcuno può spiegarmi come fare?
    grazie
    questo lo script:
    <!--METADATA TYPE="typelib"
    UUID="00000205-0000-0010-8000-00AA006D2EA4"
    NAME="ADODB Type Library"-->
    <%
    Dim objStream
    Set objStream = Server.CreateObject("ADODB.Stream")

    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile Server.MapPath("banca/tax.pdf")
    Response.ContentType = "application/pdf"
    Response.BinaryWrite objStream.Read

    objStream.Close
    Set objStream = Nothing
    %>


  • User Attivo

    Potresti fare semplicemente un select, mi spiego meglio:

    chiami questo script passandogli una variabile che indentifica il documento in questo modo:

    pagina.asp?documento=1 per il documento n.1
    pagina.asp?documento=2 per il documento n.2

    e così via per ogni documento, poi all'interno della pagina aggiugi questo codice:

    documento = cint(request("documento"))

    Select case documento
    case 1: percorso = "cartella1/tax.pdf"
    case 2: percorso = "cartella1/azioni.pdf"
    case 3: percorso = "cartella2/scambiolink.pdf"
    End select

    all'interno del tuo script dopo aver aggiunto questo codice subito dopo <% (il tag di apertura) devi sostituire solo una riga

    Questa:
    objStream.LoadFromFile Server.MapPath("banca/tax.pdf")

    diventa questa:
    objStream.LoadFromFile Server.MapPath(percorso)

    Ok, se non fossi stato chiaro ti spiego a grandi linee cosa ho fatto, non faccio altro che passare al tuo script un file diverso a seconda del documento che il client ha scelto, il mio esempio si compone di 3 file nel select, ma tu puoi arrivare a quanti ne vuoi aggiungendo altre righe nel select esempio:

    case 4: percorso = "cartella3/learnAsp.pdf"

    per altre info sono qui a disposizione :fumato:


  • User

    ciao e grazie mille per la risposta, mi aiuti a comprendere meglio (avrai capito che sono un principiante)?

    pagina.asp?documento=1 per il documento n.1
    pagina.asp?documento=2 per il documento n.2

    in che punto dello script devo inserirlo?
    e se ad es. identifico con 1 il doc. "tax.pdf" la variabile diventa:
    "pagina.asp?documento=1" (?)


  • User Attivo

    si effettivamente questa cosa non l'ho specificata a dovere.

    Non vanno inserite nello script !

    Esempio pratico, un utente entra nella tua area riservata e viene ridirezionato ad esempio su una pagina che chiameremo elenco.asp dove si trova davanti la lista dei documenti che può scaricare.

    Se questo vuole scaricare il Tax.pdf devi mettere nella pagina elenco.asp il collegamento a pagina.asp?documento=1

    e così via,
    ovvero ogni odcumento che vuoi far scaricare deve avere un link a pagina.asp?documento=x dove x è il numero corrispondente del documento che setti nel select

    Ciao ANtonio


  • User

    fatto! ma non funziona...mi da questo errore:

    ADODB.Stream error '800a0bba'

    File could not be opened.

    /getdoc.asp, line 22

    questo è il codice con gli inserimenti che mi hai suggerito:

    <!--METADATA TYPE="typelib"
    UUID="00000205-0000-0010-8000-00AA006D2EA4"
    NAME="ADODB Type Library"-->
    <%

    documento = cint(request("documento"))

    Select case documento
    case 1: percorso = "banca/tax.pdf"
    case 2: percorso = "banche/guida.pdf"

    End select

    Dim objStream
    Set objStream = Server.CreateObject("ADODB.Stream")

    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile Server.MapPath("percorso")
    Response.ContentType = "application/pdf"
    Response.BinaryWrite objStream.Read

    objStream.Close
    Set objStream = Nothing

    %>
    la linea incriminata è quella in rosso.

    dove sbaglio?
    grazie per la pazienza.


  • User Attivo

    Si è sbagliato, percorso è una variabile e non ha bisogno delle virgolette ai lati, le virgolette si usano quando usi stringhe di testo come costanti al posto delle variabili.

    objStream.LoadFromFile Server.MapPath(percorso)

    senza le virgolette ti funziona sicuro.


  • User

    SEI GRANDE, funziona bene. non so proprio come ringraziarti spero di poter ricambiare in futuro.
    ciao.


  • User Attivo

    Di nulla figurati ! :vai: