Precedente :: Successivo |
Autore |
Messaggio |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 18 Ott 2005 14:28 Oggetto: * Contatore download che non modifichi il nome di un file |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 19 Ott 2005 11:48 Oggetto: |
|
|
io non li conto, sai sono così tanti...
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
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 |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 20 Ott 2005 11:46 Oggetto: |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 20 Ott 2005 14:47 Oggetto: |
|
|
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...)  |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 20 Ott 2005 17:08 Oggetto: |
|
|
Beh, ma non volevo inventarla!
Solo incorporare questa procedura nello script di statistiche che distribuiscono qui
Ciao e grazie ancora!
Ciao! |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 20 Ott 2005 17:17 Oggetto: |
|
|
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...  |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 21 Ott 2005 23:07 Oggetto: |
|
|
Interessante, ehm come si fa a scaricare i log di Apache su tophost e su altervista???
Ciao! |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 24 Ott 2005 15:51 Oggetto: |
|
|
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...
Per Altervista... mmm... guarda nelle loro FAQ se è possibile... |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 24 Ott 2005 21:57 Oggetto: |
|
|
Vedrò cosa posso fare.
Grazie dell'aiuto!
Ciao! |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 26 Ott 2005 15:25 Oggetto: |
|
|
Impossibile con entrambi i server...
Peccato, mi intrigava la faccenda. Dunque proverò a seguire il suggerimento imbarcandomi nel php.
Ciao! |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 30 Ott 2005 13:52 Oggetto: |
|
|
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 |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 30 Ott 2005 16:46 Oggetto: |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 31 Ott 2005 18:47 Oggetto: |
|
|
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?  |
|
Top |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 31 Ott 2005 19:01 Oggetto: |
|
|
Purtroppo ho già provato... Con IE non funziona, con Opera E FF ovviamente sì...
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 |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 01 Nov 2005 12:52 Oggetto: |
|
|
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?
- scrivi l'indirizzo direttamente nel browser?
- 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 |
|
 |
ZapoTeX Dio maturo


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


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 01 Nov 2005 18:49 Oggetto: |
|
|
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 |
|
 |
ZapoTeX Dio maturo


Registrato: 04/06/04 17:18 Messaggi: 2627 Residenza: Universo conosciuto
|
Inviato: 01 Nov 2005 22:12 Oggetto: |
|
|
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 |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 09:37 Oggetto: |
|
|
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 |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 03 Nov 2005 10:20 Oggetto: |
|
|
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 |
|
 |
|