Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Contatore download che non modifichi il nome di un file
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 03 Nov 2005 11:49    Oggetto: Rispondi citando

SverX ha scritto:
Ah, il fatto che un client "apra" il documento mentre un altro chieda cosa farne ("Salva?" "Apri?") non puoi cambiarlo dal server... è il client che è da configurare...

Anch'io lo pensavo, invece il codice ASP che ho postato sopra permette di cambiare il funzionamento tipico del browser.
Con tutti e tre i principali browser (IE, FF e Opera), appena faccio click su un collegamento ad un file pdf esso si apre come oggetto incorporato nel browser, senza chiedermi conferma. Se invece utilizzo il sistema in ASP, il browser mi chiede se voglio Aprire, Salvare o Annullare.

Ecco un esempio.

Ciao
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 03 Nov 2005 12:36    Oggetto: Rispondi citando

cavolo!!! Shocked Shocked Shocked

allora vediamo di capire perchè...
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 03 Nov 2005 12:38    Oggetto: Rispondi citando

Popcorn

Wink
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 03 Nov 2005 13:05    Oggetto: Rispondi citando

Questo l'header della risposta "via ASP"

Codice:
HTTP/1.1 200 OK
Connection: close
Date: Thu, 03 Nov 2005 10:38:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MicrosoftOfficeWebServer: 5.0_Pub
Content-Disposition: attachment; filename=Vida.pdf
Content-Length: 2891
Content-Type: application/pdf; Charset=UTF-8
Cache-control: private


mentre questo che segue quello del link diretto:

Codice:
HTTP/1.1 200 OK
Content-Length: 2891
Content-Type: application/pdf
Last-Modified: Thu, 03 Nov 2005 09:31:15 GMT
Accept-Ranges: bytes
ETag: "f6e1615659e0c51:4ead2e"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MicrosoftOfficeWebServer: 5.0_Pub
Date: Thu, 03 Nov 2005 10:59:44 GMT


direi che il comportamento è palesemente differente nonostante i due header non lo siano così tanto... credo che la maggior differenza stia in

Codice:
Content-Disposition: attachment; filename=Vida.pdf


che in pratica dice al browser: guarda che ti mando un 'allegato'

... per tornare nel discorso... e se la pagina ASP/PHP in questione, dopo aver conteggiato il click, facesse semplicemente un redirect?

Rolling Eyes Rolling Eyes Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 03 Nov 2005 15:06    Oggetto: Rispondi citando

SverX ha scritto:
... per tornare nel discorso... e se la pagina ASP/PHP in questione, dopo aver conteggiato il click, facesse semplicemente un redirect?

Rolling Eyes Rolling Eyes Rolling Eyes

Mi sembra di aver capito che ZapoTex desideri fare il dowload del file, non l'apertura automatica. Con il redirect accade come con il link diretto, il file pdf viene aperto nel browser.

Vabbè, in ogni caso la discussione è stata utile perchè ha portato a degli spunti interessanti, in particolare la tecnica descritta potrebbe tornare utile per creare un'area di download protetta all'interno del sito...
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 03 Nov 2005 15:16    Oggetto: Rispondi citando

tas ha scritto:
... in particolare la tecnica descritta potrebbe tornare utile per creare un'area di download protetta all'interno del sito...


pensi a qualcosa tipo un utente registrato entra autenticandosi e scarica quello che vuole mentre chi non è autenticato riceve "picche" dalla pagina di download (e i file non sono in una cartella accessibile direttamente, ovvio)... ?

Nonags.com fa proprio così... Very Happy
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 17:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 03 Nov 2005 15:18    Oggetto: Rispondi citando

Ma nel download.php che uso io il content disposition attachment c'è, eppure IE me lo apre sto pdf, la differenza deve essere un'altra!
Appena ho un po' di tempo e il mio server funziona provo con charset utf-8

Ciao e grazie a tutti, ne sapete tante ragazzi!

PS: SverX, l'header l'hai ricavato dal codice o il tuo browser te lo dice? Ho hai usato un telnet per capirlo?

Ciao!
Top
Profilo Invia messaggio privato HomePage
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 03 Nov 2005 16:15    Oggetto: Rispondi citando

SverX ha scritto:
tas ha scritto:
... in particolare la tecnica descritta potrebbe tornare utile per creare un'area di download protetta all'interno del sito...


pensi a qualcosa tipo un utente registrato entra autenticandosi e scarica quello che vuole mentre chi non è autenticato riceve "picche" dalla pagina di download (e i file non sono in una cartella accessibile direttamente, ovvio)... ?

Nonags.com fa proprio così... Very Happy

Già, centrato in pieno, era ovvio che altri lo hanno già sviluppato da parecchio tempo, nel mio piccolo cerco di districarmi tra le limitazioni imposte dal provider! Non so che tipo di software permetta di scaricare nonags.com, nel mio caso ho delle applicazioni sviluppate per dei clienti e vorrei consentire il download solo a loro e non ad altri.
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 03 Nov 2005 16:19    Oggetto: Rispondi citando

ZapoTex ha scritto:
PS: SverX, l'header l'hai ricavato dal codice o il tuo browser te lo dice? Ho hai usato un telnet per capirlo?


se usavo il telnet finivo domani Wink ho usato Ethereal Smile

tas ha scritto:
Non so che tipo di software permetta di scaricare nonags.com, ...


FreeWare Smile [www.nonags.com] Hanno una area "membri" (Nonags Plus!) dove chi è abbonato può scaricare direttamente dai loro server...
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 15 Nov 2005 10:43    Oggetto: Rispondi citando

... la butto lì per riprendere il 3d.

Probabilmente si potrebbe fare così (vediamo se vi sembra tanto una boiata...)

- il link nella pagina del tipo: http://www.sito.web/download/somefile.pdf (un file pdf per esempio)
- la cartella download non esiste ma configuriamo una rewrite sul server in modo che alla richiesta di cui sopra invece il server veda: /download.php?f=somefile.pdf
- nella pagina download.php controlliamo _se_ l'utente può scaricare il file (è loggato? è autorizzato?) e se ok allora aggiungiamo 1 ai download e gli mandiamo gli header corretti ed il contenuto del file, senza bisogno di specificare un "Content-Disposition", tanto il nome del file è già sull'URL... se invece non si è autorizzati rispondiamo con un 301 e mandiamo il browser a "error.php" dove gli spieghiamo cosa è capitato...

Zapo? tas? Altri?
Top
Profilo Invia messaggio privato HomePage
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 15 Nov 2005 14:15    Oggetto: Rispondi citando

Ma l'hai provato? Funziona?
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 15 Nov 2005 14:30    Oggetto: Rispondi citando

tas ha scritto:
Ma l'hai provato? Funziona?


non l'ho provato... e mi sa che non posso nemmeno... tu hai un Apache (o un IIS) disponibile di prova su cui puoi fare quel che vuoi?
Top
Profilo Invia messaggio privato HomePage
tas
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/10/05 09:59
Messaggi: 166
Residenza: Profondo nord

MessaggioInviato: 17 Nov 2005 23:46    Oggetto: Rispondi citando

Il sito ce l'ho su IIS 6.0 ma non so se il provider mi lascia fare tutto quello che voglio... o meglio, quello che vorresti fare tu! Aspetto indicazioni, Ciao
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 18 Nov 2005 10:23    Oggetto: Rispondi citando

mmm... c'è un ISAPI free chiamato "ISAPI_Rewrite Lite"... ma puoi installarlo sul server? Neutral

altrimenti chi ci presta un Apache? Smile
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 17:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 03 Dic 2005 23:49    Oggetto: Rispondi citando

Sull'area protetta non so, roba troppo complicata per me, ma per il contatore che forza il download...

CI SONO RIUSCITO!!!

Il nome file è giusto, funziona con i 3 browser che mi interessano (e credo anche con gli altri), chiede se voglio salvarlo o aprirlo e mi dice che applicazione è.

Questa è la funzioncina php che utilizzo:

Codice:

switch($ext)
        {
        case 'pdf': $ctype='application/pdf'; break;
        case 'exe': $ctype='application/octet-stream'; break;
        case 'zip': $ctype='application/zip'; break;
        case 'doc': $ctype='application/msword'; break;
        case 'xls': $ctype='application/vnd.ms-excel'; break;
        case 'ppt': $ctype='application/vnd.ms-powerpoint'; break;
        case 'gif': $ctype='image/gif'; break;
        case 'png': $ctype='image/png'; break;
        case 'jpg': $ctype='image/jpg'; break;
        default: $ctype='application/force-download';
        }
   header('Content-Type:'.$ctype.'; Charset=UTF-8');
        $user_agent = strtolower ($_SERVER['HTTP_USER_AGENT']);
        header('Content-Disposition: filename="'.basename($filename).'"' );
        header('Content-Disposition: attachment; filename="'.basename($filename).'"');
        header('Pragma: public');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Cache-Control: public');
        header('Content-Transfer-Encoding: binary');
        //header('Content-Length: '.filesize($filename));
        @readfile($filename);
        exit();


Ciao e grazie a tutti!
PS: il successo dipende da Charset UTF-8. Togliendo quello non va più un tubo.
PPS: che bello smanettare il php con 39 di febbre mentre sai che i tuoi amici sono fuori a gozzovigliare... Mad Confused
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 06 Dic 2005 14:53    Oggetto: Rispondi citando

a fare il pistino non dovresti mettere 2 header uguali... mettine solo uno dei due, a seconda del browser che fa la richiesta...

Codice:
header('Content-Disposition: filename="'.basename($filename).'"' );
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 17:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 07 Dic 2005 22:32    Oggetto: Rispondi citando

Hai ragione!

Lo script che c'era prima differenziava l'header a seconda del browser io ho cancellato tutti gli if, perché:
1) Opera può identificarsi come IE ed è un macello
2) Lo script in asp postato da tas funziona con tutti i browser con lo stesso header

Però nel cancellare ho dimenticato di cancellare una riga Embarassed Embarassed Embarassed

Grazie, provvedo subito!
Ehm... Cancello la prima delle due righe vero? vero?

Ciao!
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 17:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 07 Dic 2005 22:41    Oggetto: Rispondi citando

Codice:

HTTP/1.1 200 OK
Date: Wed, 07 Dec 2005 20:36:33 GMT
Server: Apache
Cache-Control: public
Content-Disposition: attachment; filename="curr-archetti-ita.rtf"
Content-Transfer-Encoding: binary
Expires: 0
Pragma: public
X-Powered-By: PHP/4.4.1
Connection: close
Content-Type: application/force-download; Charset=UTF-8

Ecco qui l'header che viene fuori dalla versione corretta della funzione. Ottimo!

Adesso però c'è un altro problema... Se io clicco sul link, ma poi gli dico annulla, il contatore di download mi viene incrementato lo stesso... Non c'è la possibilità di contare separatamente i download compiuti da quelli interrotti / annullati prima di iniziare?

Grazie a tutti, ciao!
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11828
Residenza: Tokelau

MessaggioInviato: 16 Dic 2005 18:01    Oggetto: Rispondi citando

ZapoTex ha scritto:
Se io clicco sul link, ma poi gli dico annulla, il contatore di download mi viene incrementato lo stesso... Non c'è la possibilità di contare separatamente i download compiuti da quelli interrotti / annullati prima di iniziare?


non credo... ma forse se metti l'incremento del contatore _dopo_ @readfile($filename); ... se ci arrivi allora (in teoria) vuol dire che tutto il file è stato mandato al browser...

ma non so per certo... di solito si contano i download quando si iniziano...
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


Registrato: 04/06/04 17:18
Messaggi: 2627
Residenza: Universo conosciuto

MessaggioInviato: 17 Dic 2005 13:04    Oggetto: Rispondi

Purtroppo è già dopo, ma li conta lo stesso.

Farò esperimenti e mi rifarò vivo.

Ciao!
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Vai a Precedente  1, 2
Pagina 2 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi