Precedente :: Successivo |
Autore |
Messaggio |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 03 Nov 2005 11:49 Oggetto: |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 03 Nov 2005 12:36 Oggetto: |
|
|
cavolo!!!
allora vediamo di capire perchè... |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 03 Nov 2005 12:38 Oggetto: |
|
|
 |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 03 Nov 2005 13:05 Oggetto: |
|
|
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?
 |
|
Top |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 03 Nov 2005 15:06 Oggetto: |
|
|
SverX ha scritto: | ... per tornare nel discorso... e se la pagina ASP/PHP in questione, dopo aver conteggiato il click, facesse semplicemente un redirect?
 |
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 03 Nov 2005 15:16 Oggetto: |
|
|
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ì...  |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 03 Nov 2005 15:18 Oggetto: |
|
|
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 |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 03 Nov 2005 16:15 Oggetto: |
|
|
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ì...  |
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 03 Nov 2005 16:19 Oggetto: |
|
|
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 ho usato Ethereal
tas ha scritto: | Non so che tipo di software permetta di scaricare nonags.com, ... |
FreeWare [www.nonags.com] Hanno una area "membri" (Nonags Plus!) dove chi è abbonato può scaricare direttamente dai loro server... |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 15 Nov 2005 10:43 Oggetto: |
|
|
... 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 |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 15 Nov 2005 14:15 Oggetto: |
|
|
Ma l'hai provato? Funziona? |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 15 Nov 2005 14:30 Oggetto: |
|
|
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 |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 17 Nov 2005 23:46 Oggetto: |
|
|
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,  |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 18 Nov 2005 10:23 Oggetto: |
|
|
mmm... c'è un ISAPI free chiamato "ISAPI_Rewrite Lite"... ma puoi installarlo sul server?
altrimenti chi ci presta un Apache?  |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 03 Dic 2005 23:49 Oggetto: |
|
|
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...  |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 06 Dic 2005 14:53 Oggetto: |
|
|
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 |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 07 Dic 2005 22:32 Oggetto: |
|
|
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
Grazie, provvedo subito!
Ehm... Cancello la prima delle due righe vero? vero?
Ciao! |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 07 Dic 2005 22:41 Oggetto: |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11828 Residenza: Tokelau
|
Inviato: 16 Dic 2005 18:01 Oggetto: |
|
|
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 |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 17 Dic 2005 13:04 Oggetto: |
|
|
Purtroppo è già dopo, ma li conta lo stesso.
Farò esperimenti e mi rifarò vivo.
Ciao! |
|
Top |
|
 |
|