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
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 18 Ott 2005 14:28    Oggetto: * Contatore download che non modifichi il nome di un file Rispondi citando

Ciao a tutti la problematica è la seguente:

per contare i download di un certo file su un sito si può puntare il link alla pagina download.php di qualche script di statistiche inviando l'id corrispondente al file in questione. Tuttavia c'è un problema: che il file scaricato dall'utente verrà salvato dal browser non come, per esempio, calendarioeventi.pdf ma come download.php.pdf

C'è un modo per impedire che questo avvenga??

Ad esempio, SverX, non conti i download di Qwerchat? Eppure quando ho scaricato, me lo ha salvato con il nome giusto! Come fai???

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


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

MessaggioInviato: 19 Ott 2005 11:48    Oggetto: Rispondi citando

io non li conto, sai sono così tanti... Wink

a parte gli scherzi... il nome con cui hai scaricato lo zip è "giusto" perchè il link punta direttamente al file .zip .... invece tu vuoi che puntando a

scarica.php?programma=15 (per dire)

ti scarichi il programma "programma.exe" e che te lo salvi con il nome corretto?

a suo tempo avevo avuto sto problema... era una Java servlet ma la situazione non cambia: devi inserire nella pagina "scarica.php" dei comandi che inseriscano il nome del file che invierai nello header della http response...

Codice:
String header_info = request.getHeader("USER-AGENT");
if (header_info.indexOf("MSIE") != -1)
{
response.setContentType("application/*");
response.setHeader("Content-Disposition","attachment;
filename = abc.exe");
}
else
{
// he wrote
// response.setContentType("application/x-filler");
// but it's better
response.setContentType("application/octet-stream");
// now it works fine also with my Netscape
response.setHeader("Content-Disposition","attachment;
filename=\"" + downloadFile + "\";");
}


la pagina non c'è più, ringrazio ufficialmente la cache di google Wink

in pratica: setto il "content-type" della pagina e poi inserisco una voce in più nell'header per il nome. Però con IE non funzionava (e ti pareva... era la 5.0 però) e quindi ho dovuto fare una distinzione...

edit: il codice qui citato è Java, in PHP dovrai usare le funzioni... mmm... no, solo la funzione header()
esempio:

Codice:
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="programma.exe"');
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 20 Ott 2005 11:46    Oggetto: Rispondi citando

Sei meglio di Fontana, le sai tutte!

Grazie, gentilissimo, fantastico!

Temo che la cosa sia un pelino oltre le mie possibilità, ma posso provarci!

Se poi funziona posso bullarmi sul sito dei developers di web site stats e suggerire la modifica! (Ovviamente citando il nome del sommo maestro che me l'ha suggerita)

Ciao, grazie ancora!
Top
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


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

MessaggioInviato: 20 Ott 2005 14:47    Oggetto: Rispondi citando

ZapoTex ha scritto:
Se poi funziona posso bullarmi sul sito dei developers di web site stats e suggerire la modifica! (Ovviamente citando il nome del sommo maestro che me l'ha suggerita)


non so se conviene: su php.net c'è

Codice:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>


in questa pagina, ed è esattamente quel che ti serve. Quindi rischiamo solo di fare la figura del gelataio (con tutto il rispetto per la categoria...) Rolling Eyes Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 20 Ott 2005 17:08    Oggetto: Rispondi citando

Beh, ma non volevo inventarla!

Solo incorporare questa procedura nello script di statistiche che distribuiscono qui

Ciao e grazie ancora!

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


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

MessaggioInviato: 20 Ott 2005 17:17    Oggetto: Rispondi citando

non so come funzioni lo script che mi citi ma le statistiche -personalmente- non le elaboro on-line. Scarico i log di accesso di Apache e poi uso Analog... ma da anni-eanni-eanni... Wink
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 21 Ott 2005 23:07    Oggetto: Rispondi citando

Interessante, ehm come si fa a scaricare i log di Apache su tophost e su altervista???

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


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

MessaggioInviato: 24 Ott 2005 15:51    Oggetto: Rispondi citando

ZapoTex ha scritto:
Interessante, ehm come si fa a scaricare i log di Apache su tophost e su altervista???


Ahem... dicevo "si potrebbe", perchè non l'ho mai fatto su TopHost... in realtà scarico i log che mi scrivo direttamente io... Rolling Eyes Rolling Eyes

Per Altervista... mmm... guarda nelle loro FAQ se è possibile...
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 24 Ott 2005 21:57    Oggetto: Rispondi citando

Vedrò cosa posso fare.

Grazie dell'aiuto!

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


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

MessaggioInviato: 26 Ott 2005 15:25    Oggetto: Rispondi citando

Impossibile con entrambi i server...

Peccato, mi intrigava la faccenda. Dunque proverò a seguire il suggerimento imbarcandomi nel php.

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


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

MessaggioInviato: 30 Ott 2005 13:52    Oggetto: Rispondi citando

AIUTO! MISTERO DEI MISTERI!!!!!
Ho scelto di forzare il download e ho fatto una prova con un pdf: effettivamente Opera, IE e FF me lo scaricano senza aprirmelo. Anche il nome del file me lo mettono giusto.

Poi ho detto: ora provo con un doc. Risultato: assurdo. IE tutto bene, FF me lo salva come .doc e mi chiede se voglio aprirlo con Microsoft Word, ma mostra l'iconcina del pdf!!!!!!!!
Opera me lo vuole salvare PROPRIO COME PDF!

E' semplicemente assurdo!

Posto la parte rilevante di codice della pagina download.php

Codice:
header('Content-Type: application/x-download');
        $user_agent = strtolower ($_SERVER['HTTP_USER_AGENT']);
        if ((is_integer (strpos($user_agent, 'msie'))) && (is_integer (strpos($user_agent, 'win')))) //da migliorare con riconoscimento
        {
          header('Content-Disposition: filename="'.basename($filename).'"' );
        } else {
          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');


Grazie a tutti, ciao![/quote]
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 30 Ott 2005 16:46    Oggetto: Rispondi citando

E' da stamattina che ci sto impazzendo e non ne posso più adesso vado a bere tutte le bevande che piacciono agli dei da adesso fino a notte, caffé birra, cannonau, genepì e tutte le altre celestiali.

Prima di andare formalizzo le mie esigenze, che credo siano "oneste", insomma, sarebbe interessante e utile per molti avere ciò che sto cercando:

Un contatore di download che, su tutti i browser (o almeno su tutte le versioni più recenti di IE, FF, Opera e visto che sono buono anche Navigator e Safari) sia in grado di:
1) Forzare il download;
2) Mandare il nome giusto del file da scaricare
Ho provato a smanettare l'header, ma ho fallito per due motivi: conosco troppo poco i browser e conosco troppo poco php. HO provato con google e mi sono stupito del fatto che nessuno abbia questa esigenza. Sono l'unico che viaggia su server che non danno i log?

Ciao e grazie a tutti coloro che evitano di mettersi il prezzemolo nelle orecchie (o meglio sullo schermo) quando vedono il mio nome su un 3d.

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


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

MessaggioInviato: 31 Ott 2005 18:47    Oggetto: Rispondi citando

devi cambiare

Codice:
header('Content-Type: application/x-download');


a seconda di cosa stai mandando...

qui una lista dei MIME type... non completa ma dà l'idea...

edit: ancora meglio, potresti lasciare "application/octet-stream" che è la voce per dire "qualcosa di non specificato", e lasciare che sia il browser, aiutato dall'estensione del file, a capire di che tipo è...

palla buona? Wink
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 31 Ott 2005 19:01    Oggetto: Rispondi citando

Purtroppo ho già provato... Con IE non funziona, con Opera E FF ovviamente sì... Confused
Ora non posso provare perché il parsing php su quel cavolo di server è k.o.

Il comportamento che ricordo era: IE apre il pdf, o meglio tenta di aprirlo, ma mostra solo l'iconcina, la stessa che mostra quando una foto non è disponibile.

E questo è vero sia per application/octet-stream che per application/force-download.

Non so che fare!

Grazie grazie grazie! Comunque mi sembra veramente stranissimo che nessuno abbia affrontato la cosa... Su Internet si trovano anche siti che ti spiegano come fare il caffé usando solo le dita dei piedi!

Grazie, 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: 01 Nov 2005 12:52    Oggetto: Rispondi citando

Spinto dalla curiosità ho provato la cosa in asp e... funziona, sia con IE, FF e Opera!

Se vuoi ti posto il codice che ho trovato altrove ed adattato, prima però ti chiedo una cosa che potrebbe aiutarti: come fai a provare la pagina php che hai scritto?

  1. scrivi l'indirizzo direttamente nel browser?
  2. ti colleghi ad essa con un link presente in un'altra pagina?

Da prove effettuate, ho notato che nel caso (a) con FF ed Opera funziona bene, mentre con IE no. Con il caso (b) funziona bene ovunque!
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 01 Nov 2005 17:10    Oggetto: Rispondi citando

Il mio caso è il (b), la pagina è uno script che aggiorna il database dei download e invia un file all'utente. Il tutto parte quando l'utente clicca sul link a quel file, che in realtà è un link alla pagina php che manda anche l'id del file da scaricare.

Se è in asp no problem, l'importante è sapere che header mandare! Una volta che so quello glielo mando in php, asp, se vuole anche in arabo!

Ciao, grazie dei suggerimenti! Aspetto nuove notizie!

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: 01 Nov 2005 18:49    Oggetto: Rispondi citando

Ecco quello che ho trovato in internet:
Codice:
Sub ForceDownload(strFilePath)
   Set oFS = Server.CreateObject("Scripting.FileSystemObject")
   Set oFile = oFS.GetFile(strFilePath)
   StrFileSize = oFile.Size
   Set oFile = Nothing
   Set oFS = Nothing

   Const adTypeBinary = 1

   Set objStream = Server.CreateObject("ADODB.Stream")
   objStream.Open
   objStream.Type = adTypeBinary
   objStream.LoadFromFile strFilePath

   strFileType = lcase(Right(strFilePath, 4))
   
   ' Feel Free to Add Your Own Content-Types Here
   Select Case strFileType
      Case ".asf"
         ContentType = "video/x-ms-asf"
      Case ".avi"
         ContentType = "video/avi"
      Case ".doc"
         ContentType = "application/msword"
      Case ".zip"
         ContentType = "application/zip"
      Case ".xls"
         ContentType = "application/vnd.ms-excel"
      Case ".gif"
         ContentType = "image/gif"
      Case ".jpg", "jpeg"
         ContentType = "image/jpeg"
      Case ".wav"
         ContentType = "audio/wav"
      Case ".mp3"
         ContentType = "audio/mpeg3"
      Case ".mpg", "mpeg"
         ContentType = "video/mpeg"
      Case ".rtf"
         ContentType = "application/rtf"
      Case ".htm", "html"
         ContentType = "text/html"
      Case ".asp"
         ContentType = "text/asp"
      Case ".pdf"
         ContentType = "application/pdf"
      Case Else
         'Handle All Other Files
         ContentType = "application/octet-stream"
   End Select
   
   Response.AddHeader "Content-Disposition", "attachment; filename=" & StripFileName(StrFilePath)
   Response.AddHeader "Content-Length", strFileSize
   ' In a Perfect World, Your Client would also have UTF-8 as the default
   ' In Their Browser
   Response.Charset = "UTF-8"
   Response.ContentType = ContentType
   
   Response.BinaryWrite objStream.Read
   Response.Flush

   objStream.Close
   Set objStream = Nothing
End Sub

Function StripFileName(ByVal asPath)
   If asPath = "" Then Exit Function
   asPath = Replace(asPath, "/", "\")
   If InStr(asPath, "\") = 0 Then Exit Function
   If Right(asPath, 1) = "\" Then Exit Function
   
   StripFileName = Right(asPath, Len(asPath) - InStrRev(asPath, "\"))
End function

Call ForceDownload(Server.MapPath("/document.pdf"))

Come puoi notare, per il formato pdf viene usata l'intestazione "application/pdf".

Spero di esserti stato d'aiuto, ciao
Top
Profilo Invia messaggio privato HomePage
ZapoTeX
Dio maturo
Dio maturo


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

MessaggioInviato: 01 Nov 2005 22:12    Oggetto: Rispondi citando

Sicuramente lo sei stato. Vedo di trasportare la cosa nello script con cui ho a che fare e vedo, comunque se ricordo bene mandandogli application/pdf IE e FF lo aprono, solo Opera ti chiede cosa vuoi fare.

Riproverò.

Forse la cosa più interessante è il charset UTF-8, che nel mio script manca e potrebe essere la radice dei problemi di IE.

Grazie!
Top
Profilo Invia messaggio privato HomePage
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 02 Nov 2005 09:37    Oggetto: Rispondi citando

Prova a mandargli
Codice:
application/x-unknown

e poi metti il
Codice:
Content-Disposition: attachment; filename=nomefile


A me funziona anche con i pdf su tutti i browser.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


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

MessaggioInviato: 03 Nov 2005 10:20    Oggetto: Rispondi

altrimenti (eh, ho fatto una ricerca...) usi la funzione apposita:

string mime_content_type ( string filename )
http://it2.php.net/manual/en/function.mime-content-type.php

in pratica l'utente vuole il file 'somefile.ext' e tu chiami la funzione suddetta che ti restituisce la stringa che tu devi mandare al client attraverso

header('Content-Type: *qui*');

meglio di così (... beh, se il server è configurato correttamente...)

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...
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 1, 2  Successivo
Pagina 1 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