Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    Problema "apri" con forceDownload

    Sto utilizzando la funzione forceDownload di Andr3a Giammarchi e ho un problema.
    Il salvataggio dei files funziona perfettamente.
    Ma se alla finestra di download che chiede di scaricare il file scelgo "apri" invece che "salva", si apre il programma dedicato (Acrobat per i pdf, wordpad per gli rtf...) con un messaggio di errore dicendo che il file non esiste.

    Inutile a dirlo, l'errore si presenta solo con IE, mentre con Firefox funziona tutto a meraviglia.

    Si può risolvere in qualche modo?

    Grazie.
    /* Let's Lead the Web to Its Full Potential */

  2. #2
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    up
    /* Let's Lead the Web to Its Full Potential */

  3. #3

    Re: Problema "apri" con forceDownload

    Originariamente inviato da Cheope
    Sto utilizzando la funzione forceDownload di Andr3a Giammarchi e ho un problema.
    Il salvataggio dei files funziona perfettamente.
    Ma se alla finestra di download che chiede di scaricare il file scelgo "apri" invece che "salva", si apre il programma dedicato (Acrobat per i pdf, wordpad per gli rtf...) con un messaggio di errore dicendo che il file non esiste.

    Inutile a dirlo, l'errore si presenta solo con IE, mentre con Firefox funziona tutto a meraviglia.

    Si può risolvere in qualche modo?

    Grazie.

    sai questo problema l'ho avuto anche io....non sono riuscito a risolvere!


  4. #4

    Re: Problema "apri" con forceDownload

    Originariamente inviato da Cheope
    se alla finestra di download che chiede di scaricare il file scelgo "apri" invece che "salva", si apre il programma dedicato con un messaggio di errore dicendo che il file non esiste, l'errore si presenta solo con IE
    a parte che usare una funzione forceDownload per non fare il download mi sembra un controsenso


    cmq e' assolutamente normale, quella funzione e' fatta per far scaricare i files, a prescindere dalla natura degli stessi ... ergo usa un
    Content-Type: application/octet-stream
    e non un content type dedicato, pdf, rtf o quello che e'

    Inutile dire che un browser riuscirebbe comunque, una volta partito il download, a riconoscere il tipo di file, mentre un caca-browser (uno a caso ... IE) no.

    Per fare quello ce vuoi fare devi filtrare la richiesta, ovvero se clicka su download, lo scarica, se clicka su read e il file e' leggibile via browser (pdf, txt, altro) non usi la forceDownload ... ma leggi il file e metti il giusto Content e lo mostri
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    Re: Re: Problema "apri" con forceDownload

    Originariamente inviato da andr3a
    a parte che usare una funzione forceDownload per non fare il download mi sembra un controsenso
    Certo, ma un utonto è anche libero di aprire il file... E se a quel punto schiaccia "apri" e vede un errore con scritto che il file non esiste a dir poco ci rimane male e il sito non ci fa bella figura, non credi? Chi glielo spiega che dipende dal suo browser, che magari non sa nemmeno cosa significa? Lui guarda il risultato...
    Originariamente inviato da andr3a
    Per fare quello ce vuoi fare devi filtrare la richiesta, ovvero se clicka su download, lo scarica, se clicka su read e il file e' leggibile via browser (pdf, txt, altro) non usi la forceDownload ... ma leggi il file e metti il giusto Content e lo mostri
    Prima di ricorrere alla tua funzione, avevo tradotto una mia vecchia pagina di download che avevo fatto una volta in ASP. Una bella sfilza di mime types e... e cicca! Neanche così funziona.
    Take a look, magari trovi l'inghippo...

    codice:
    // Ricavo nome del file e percorso
    $filePath=$_GET["file"];
    $estensione=explode(".", $filePath);
    $ext=$estensione[1];
    $fileName=substr(strrchr($filePath, "/"), 1);
    if (isset($_GET["nome"])) { $nomeFile=pulisciInput($_GET["nome"]).".".substr(strrchr($filePath, "."), 1); }
    else { $nomeFile=$fileName; }
    
    $mimeType="";
    $mimeTypes=array();
    $mimeTypes[]=array("AU", "audio/basic");
    $mimeTypes[]=array("CSS", "text/css");
    $mimeTypes[]=array("CSV", "text/tab-separated-values");
    $mimeTypes[]=array("DOC", "application/msword");
    $mimeTypes[]=array("GIF", "image/gif");
    $mimeTypes[]=array("HTML", "text/html");
    $mimeTypes[]=array("HTM", "text/html");
    $mimeTypes[]=array("JPEG", "image/jpeg");
    $mimeTypes[]=array("JPG", "image/jpeg");
    $mimeTypes[]=array("KAR", "audio/mid");
    $mimeTypes[]=array("M1V", "video/mpeg");
    $mimeTypes[]=array("MDB", "application/msaccess");
    $mimeTypes[]=array("MID", "audio/mid");
    $mimeTypes[]=array("MIDI", "audio/mid");
    $mimeTypes[]=array("MPE", "video/mpeg");
    $mimeTypes[]=array("MPG", "video/mpeg");
    $mimeTypes[]=array("MPG2", "video/mpeg");
    $mimeTypes[]=array("MPEG", "video/mpeg");
    $mimeTypes[]=array("MPG4", "video/mpeg");
    $mimeTypes[]=array("MP4", "video/mpeg");
    $mimeTypes[]=array("PDF", "application/pdf");
    $mimeTypes[]=array("RMI", "audio/mid");
    $mimeTypes[]=array("RTF", "text/enriched");
    $mimeTypes[]=array("TIF", "image/tif");
    $mimeTypes[]=array("TIFF", "image/tiff");
    $mimeTypes[]=array("TXT", "text/plain");
    $mimeTypes[]=array("WAV", "application/wav");
    $mimeTypes[]=array("XBM", "image/xbm");
    $mimeTypes[]=array("XLB", "application/msexcel");
    $mimeTypes[]=array("XLS", "application/msexcel");
    $mimeTypes[]=array("ZIP", "application/zip");
    
    // Ricavo il mime type dall'estensione
    foreach ($mimeTypes as $mime){
    	if ($mime[0]==$ext) $mimeType=$mime[1];
    	else $mimeType="application/octet-stream'";
    }
    
    // Leggo il file
    $file_content = implode('', file($filePath));
    
    // Invio l'header del formato di file
    header("Content-Type: $mimeType");
    
    // Specifico al browser che il file è un allegato, ovvero
    // è da scaricare non da visualizzare
    header("Content-Disposition: attachment; filename=$nomeFile");
    
    // Specifico il tipo di codifica nel trasferimento
    header("Content-Transfer-Encoding: binary");
    
    // Invio il file al browser
    echo $file_content;
    
    // Esco con successo
    exit(0);
    Ma forse non ho capito bene io... Cosa intendi per "filtrare la richiesta"????

    /* Let's Lead the Web to Its Full Potential */

  6. #6

    Re: Re: Re: Problema "apri" con forceDownload

    • nessuno deve spiegare niente al cliente, sei tu che devi gestire in modo appropriato la pagina ... se sfrutti una funzione forceDownload, nata solo ed esclusivamente per far scaricare i files senza problemi di nomi per IE o FireFox che sia, non puoi prendertela con tale funzione se non fa aprire il file ... poiche' non fa altro che quello per cui e' stata pensata, farlo scaricare
    • il tuo metodo per riconoscere sembra ok ma non vedo l' strtouppercase sull' estenzione del file ... quindi non so quanto sia affidabile, ma magari e' una mia svista



    Originariamente inviato da Cheope

    Ma forse non ho capito bene io... Cosa intendi per "filtrare la richiesta"????
    intendo creare semplicemente 2 links, uno per scaricare e salvare il file su disco che usera' la funzione forceDownload ed uno per leggere on-line il suddetto file ... poiche' se non fai questa distinzione o il tizio per scaricare deve usare il tasto destro ed il salva oggetto con nome (quello che forceDownload evita di far fare al cliente) perche' altrimenti non riuscira' a scaricarlo, oppure c'e' caso che non riesce comunque a scaricare il file con il link, poiche' se e' utonto non sa di dover usare il tasto destro ed il salva con nome.

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    Re: Re: Re: Re: Problema "apri" con forceDownload

    Originariamente inviato da andr3a
    nessuno deve spiegare niente al cliente, sei tu che devi gestire in modo appropriato la pagina ...
    Purtroppo al mio cliente devo spiegare, perchè è, come dire... "particolarmente esigente" (e ho detto tutto)...
    :maLOL:
    Originariamente inviato da andr3a
    se sfrutti una funzione forceDownload, nata solo ed esclusivamente per far scaricare i files senza problemi di nomi per IE o FireFox che sia, non puoi prendertela con tale funzione se non fa aprire il file ... poiche' non fa altro che quello per cui e' stata pensata, farlo scaricare
    Mica me la sono presa con la funzione: ho solamente chiesto se c'era un modo per risolvere l'apri...
    Originariamente inviato da andr3a
    il tuo metodo per riconoscere sembra ok ma non vedo l' strtouppercase sull' estenzione del file ... quindi non so quanto sia affidabile, ma magari e' una mia svista
    Cassius! Vuoi vedere che magari è proprio quello? Infatti con ASP (case insensitive) la stessa cosa funziona a meraviglia... Emmò ce provo... :rollo:
    Originariamente inviato da andr3a
    intendo creare semplicemente 2 links, uno per scaricare e salvare il file su disco che usera' la funzione forceDownload ed uno per leggere on-line il suddetto file ...
    Giusto! Si può fare anche così... Grazie! Non ci avevo pensato...


    /* Let's Lead the Web to Its Full Potential */

  8. #8
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    Re: Re: Re: Re: Re: Problema "apri" con forceDownload

    Originariamente inviato da Cheope
    Purtroppo al mio cliente devo spiegare, perchè è, come dire... un rompic.... "particolarmente esigente" (e ho detto tutto)...
    :maLOL:

    Mica me la sono presa con la funzione: ho solamente chiesto se c'era un modo per risolvere l'apri...

    Cassius! Vuoi vedere che magari è proprio quello? Infatti con ASP (case insensitive) la stessa cosa funziona a meraviglia... Emmò ce provo... :rollo:

    Giusto! Si può fare anche così... Grazie! Non ci avevo pensato...


    /* Let's Lead the Web to Its Full Potential */

  9. #9
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    No, non è il problema sulle maiuscole.
    Proprio non capisco. :master:
    Perchè, se è solo una questione di intestazioni, con ASP questo codice non dà problemi?
    codice:
    <%
    Dim objStream, strFilePath, strFileName
    strFilePath = request.querystring("file")
    splitto = split(strFilePath, "/")
    strFileName = splitto(Ubound(splitto))
    strFileName = pulisciInput(strFileName)
    '
    ' cerco il tipo mime del file da salvare
    tipoFile="application/octet-stream"
    dim mime
    set mime=Server.CreateObject("Scripting.Dictionary")
    	mime.Add "AU", "audio/basic"
    	mime.Add "CSS", "text/css"
    	mime.Add "CSV", "text/tab-separated-values"
    	mime.Add "DOC", "application/msword"
    	mime.Add "GIF", "image/gif"
    	mime.Add "HTML", "text/html"
    	mime.Add "HTM", "text/html"
    	mime.Add "JPEG", "image/jpeg"
    	mime.Add "JPG", "image/jpeg"
    	mime.Add "KAR", "audio/mid"
    	mime.Add "M1V", "video/mpeg"
    	mime.Add "MDB", "application/msaccess"
    	mime.Add "MID", "audio/mid"
    	mime.Add "MIDI", "audio/mid"
    	mime.Add "MPE", "video/mpeg"
    	mime.Add "MPG", "video/mpeg"
    	mime.Add "MPG2", "video/mpeg"
    	mime.Add "MPEG", "video/mpeg"
    	mime.Add "MPG4", "video/mpeg"
    	mime.Add "MP4", "video/mpeg"
    	mime.Add "PDF", "application/pdf"
    	mime.Add "RMI", "audio/mid"
    	mime.Add "RTF", "text/enriched"
    	mime.Add "TIF", "image/tif"
    	mime.Add "TIFF", "image/tiff"
    	mime.Add "TXT", "text/plain"
    	mime.Add "WAV", "application/wav"
    	mime.Add "XBM", "image/xbm"
    	mime.Add "XLB", "application/msexcel"
    	mime.Add "XLS", "application/msexcel"
    	mime.Add "ZIP", "application/zip"
    	splitto2=split(strFileName, ".") ' ricavo l'estensione
    	ext=splitto2(1)
    k=mime.keys
    v=mime.items
    for i = 0 To mime.Count -1 
    	if LCASE(ext)=LCASE(k(i)) then: tipoFile=v(i)  end if
    next
    set mime=nothing
    '
    ' apro uno stream per leggermi il file da salvare
    Set objStream = Server.CreateObject("ADODB.Stream")
    objStream.Type = 1 ' adTypeBinary
    objStream.Open
    objStream.LoadFromFile Server.MapPath(strFilePath)
    ' Istruiamo il browser sul tipo di file
    Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
    Response.ContentType = tipoFile
    ' scrivo il file aperto
    Response.BinaryWrite objStream.Read
    objStream.Close
    Set objStream = Nothing
    %>
    Anche se siamo nel forum di PHP, credo che si capisca....
    /* Let's Lead the Web to Its Full Potential */

  10. #10
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    No ideas?
    /* Let's Lead the Web to Its Full Potential */

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.