Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: download di un file

  1. #1

    download di un file

    Ciao a tutti.
    Ho un piccolo problemino.
    Sto creando uno script che dovrebbe scrivere in un file .txt e poi dovrebbe consentire il download dello stesso attraverso un link. Il mio problema è che se creo in classico link <a href=\"nomefile.txt\">scarica il file</a>, cliccandoci sopra il file si apre ansichè scaricarsi. C'è un modo per farlo scaricare, senza dover usare il tasto destro "Salva oggetto con nome..." ????

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    prova a linkare anzichè direttamente il file .txt un file php che contenga questo:

    codice:
    $filename = "percorso/e/nomedelfile.txt"
    $len = filesize($filename);
    header('Content-type: text/plain');
    header('Content-Length: $len');
    header('Content-Disposition: attachment;    filename="nomechevuoidarealfilequandovienesalvato.txt"');
    readfile($filename);
    fammi sapere, ciao

  3. #3
    ho provato lo script che mi hai scritto, ma c'è un problema: il downolad parte perfettamente e mi salva il file. Quando però vado ad aprire il file salvato, è vuoto.

    Manca forse qualcosa nello script?

    Grazie infinite.

    A proposito, nella stringa
    header('Content-Disposition: attachment; filename="nomefilesalvato.txt" ');

    è possibile inserire il nome di un file dinamicamente?
    Cioè, invece di nomefilesalvato.txt ho provato a mettere una variabile che contiene il nome del file: $nomefile, ma il risultato è stato che il file che mi ha creato aveva come nome $nomefile e non il contenuto della variabile $nomefile.

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    per il problema del nomedinamico basta fare cosi:
    codice:
    header('Content-Disposition: attachment;    filename="'.$nomefile.'"');
    per l'altro problema non saprei, hai scritto e chiuso il file?

    dai il percorso corretto al file?


    ciao

  5. #5
    scusa l' ignoranza:
    io avevo copiato in un file php lo script che mi hai dato pensando fosse completo.
    Da come mi hai detto devo scrivere il file e poi chiuderlo. Come faccio?
    Devo usare la funzione fwrite() ? cosa devo metterci dentro? Il file che lui sta leggendo dal server o il nome del file di destinazione???

    Scusa se le mie domande sono forse banali, ma non sono un esperto.

    Grazie mille per la pazienza
    Ciao

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    EDIT. too late

    [.:: JaguarXF ::.]
    __________________

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ho fatto una prova che non avevo mai fatto...
    il primo è quello che conosco e che sono sicuro funzioni sempre:

    codice:
    $filename = 'test.txt';
    if (is_writable($filename)) {
     if (!$handle = fopen($filename, 'a')) {
             echo "Non si riesce ad aprire il file ($filename)";
             exit;
       }
     if (!fwrite($handle, $somecontent) ===FALSE) {
           echo "Non si riesce a scrivere nel file ($filename)";
           exit;
       }
     fclose($handle);
    }
    $len = filesize($filename);
    header('Content-type: text/plain');
    header('Content-Length: $len');
    header('Content-Disposition: attachment;    filename="nomechevuoidarealfilequandovienesalvato.txt"');
    readfile($filename);
    il secondo è questo

    codice:
    header('Content-type: text/plain');
    header('Content-Disposition: attachment;    filename="nomechevuoidarealfilequandovienesalvato.txt"');
    echo "prova";
    ciao

  8. #8
    non avevo capito bene su cosa intendevi dire quando parlavi di scrivere il file.
    Io pensavo bisognasse scrivere il file che viene salvato nel pc di chi scarica, mentre tu ti riferivi al fatto che il file di origine dovesse essere scritto.

    Ebbene, il file di origine è pieno di dati, mentre quello che si salva è completamente bianco.

    Il problema del nome variabile funziona.

    Non è che manca qualcosa dopo
    readfile($filename);

    cioè, il sistema, dopo che legge il file, non dovrebbe scriverlo in quello di destinazione? Come la fa questa operazione??

    Grazie ancora

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    il punto è che con header tu dici al browser che l'output che seguirà è un file di testo, e che tutto quello che viene dato in output deve essere messo in un file chiamato sul client con il nome che gli passi.

    Il readfile, non fa altro che mettere in output quello che legge del file.

    Ecco perchè funziona anche il secondo caso...

  10. #10
    grazie per le dritte, comunque il problema rimane lo stesso. Forse è un problema legato al Browser? Io uso EXPLORER6
    Chissà....

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.