Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144

    Aprire finestra "Salva con Nome"

    Salve ragazzi, vorrei sapere se c'è un modo in PHP che consenta l'apertura della finestra "Salva con Nome" del browser.


    Navigando in rete ho trovato queste istruzioni (ma non so se sia la soluzione al problema):

    Codice PHP:

    $filename 
    "$_FILES['pag1']['name']"

    $basename basename ($filename); 
             
    header ("Pragma: public"); 
    header ("Expires: 0"); 
    header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header ("Cache-Control: private"false); 
    header ("Content-Type: application/force-download"); 
    header ("Content-Disposition: attachment; filename=\"" $basename "\";"); 
    header ("Content-Description: File Transfer"); 
    header ("Content-Transfer-Encoding: binary"); 
    header ("Content-Length: " filesize ($filename)); 
             
    set_time_limit (0); 
             
    @
    readfile ($filename); 
             
    exit (
    0); 
    Allora, sulla pagina da salvare (pag1.php) ho creato il form

    codice:
    <form action="pag2.php" method="post">
    	<input type="button" value="Salva" />
    </form>

    che rimanda alla pagina pag2.php che contiene le istruzioni PHP scritte in alto;

    Dubbio:
    - come faccio ad indicare al form di inviare la pagina in cui esso è scritto?

    Grazie!

  2. #2
    non so se ho capito bene la domanda, io inserirei nel programma php2.php
    il seguente codice prima dell'istruzione exit:
    Codice PHP:
    print $csv_output// il file e' pronto e puo' essere scaricato 
    il sistema inserira' nel file il contenuto della variabile $csv_output, qualunque esso sia

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Originariamente inviato da tiberi72
    non so se ho capito bene la domanda, io inserirei nel programma php2.php
    il seguente codice prima dell'istruzione exit:
    Codice PHP:
    print $csv_output// il file e' pronto e puo' essere scaricato 
    il sistema inserira' nel file il contenuto della variabile $csv_output, qualunque esso sia

    Spiego meglio, la pagina pag1.php è quella dove è presente:

    - codice html + form

    Nella pagina pag2.php è presente invece solamente lo script php.

    Dovrei riuscire a salvare il testo html (presente in pag1.php) tramite lo script php (presente in pag2.php). E' sufficiente aggiungere l'istruzione che tu dici? Perchè il mio dubbio è sul come fare a inviare allo script php il codice html della pagina pag1.php.
    Spero di essermi spiegato...

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144

    Re: Aprire finestra "Salva con Nome"

    Codice PHP:

    $filename 
    "nome_file.html"

    $basename basename ($filename); 
             
    header ("Pragma: public"); 
    header ("Expires: 0"); 
    header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header ("Cache-Control: private"false); 
    header ("Content-Type: application/force-download"); 
    header ("Content-Disposition: attachment; filename=\"" $basename "\";"); 
    header ("Content-Description: File Transfer"); 
    header ("Content-Transfer-Encoding: binary"); 
    header ("Content-Length: " filesize ($filename));
             
    set_time_limit (0); 
             
    @
    readfile ($filename); 
             
    exit (
    0); 
    Penso di aver risolto, ma nell'esecuzione dello script mi da il seguente errore per l'istruzione
    header ("Content-Length: " . filesize ($filename));

    codice:
    Warning: filesize() [function.filesize]: stat failed for nome_file.html
    come mai?

  5. #5
    non penso che sia indispensabile quella linea, prova a toglierla e vediamo se funziona.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Originariamente inviato da tiberi72
    non penso che sia indispensabile quella linea, prova a toglierla e vediamo se funziona.
    Ho già provato a toglierla, non mi dà più l'errore ma mi crea un file di dimensione zero (0 byte); ho provato anche ad inserire manualmente un dimensione numerica espressa in byte (header ("Content-Length: 20200");), ma sempre dimensione del file creato a zero.

    Ho letto che la funzione filesize() funziona solamente con i file presenti sul server remoto, però a me il file serve salvarlo sul disco fisso del mio pc, potrebbe dipendere da questo aspetto?

  7. #7
    non saprei.. comunque questa e' una procedura che ho trovato su internet l'ho testata e funziona, vedi se puo' darti spunto..
    Codice PHP:
    <?php 
     $host 
    "localhost"// <-- inserisci qui l'indirizo ip di MySql 

     
    $user =  "Username"// <-- nome utente del database 

     
    $pass =  ""// <-- password dell'utente 

     
    $db "my_db"// il database desiderato 

     
    $table "tabella"// la tabella da esportare in .csv 

     
    $file $table// il nome del file csv da generare 

     
    $link mysql_connect($host$user$pass) or die("Can not connect." mysql_error()); /* usa i dati forniti per connetterti a MySql, se impossibile interrompi */ 

    mysql_select_db($db) or die("Can not connect."); // seleziona il db desiderato oppure interrompi 



    $csv_output=""



    $result mysql_query("SHOW COLUMNS FROM ".$table.""); 

    $i 0

    if (
    mysql_num_rows($result) > 0) { 

    while (
    $row mysql_fetch_assoc($result)) {   

    $csv_output .= $row['Field']."; "

    $i++; 





    $csv_output .= "\n";  



    $values mysql_query("SELECT * FROM ".$table.""); 

    while (
    $rowr mysql_fetch_row($values)) { 

    for (
    $j=0;$j<$i;$j++) {  

    $csv_output .= $rowr[$j]."; "



    $csv_output .= "\n";  



    $filename $file."_".date("d-m-Y_H-i",time()); // il nome del file sara' composto da quello scelto all'inizio e la data ed ora oggi 



    /*$archivia = new ZipArchive();         

    $nome_file="archiviodb.zip";             

    if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE)  



    @exit("Impossibile aprire <$nome_file>\n"); 



    $archivia->addFile("$filename.csv");*/          



    header("Cache-Control: public"); 

    header("Content-Description: File Transfer"); 

    header"Content-disposition: attachment;filename=".$filename.".csv"); 

    header("Content-type: application/ms-excel"); 

    header("Content-Transfer-Encoding: binary"); 

    //header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 



    print $csv_output// il file e' pronto e puo' essere scaricato 

    exit; 

     
    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Grazie!!
    Appena ho un po' di tempo provo e ti dico!

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Scrivendo il seguente codice

    Codice PHP:
    $filename "file.html";

    header("Cache-Control: public");  
    header("Content-Description: File Transfer");  
    header("Content-disposition: attachment;filename=".$filename);
    header("Content-type: application/force-download");
    header("Content-Transfer-Encoding: binary");  

    print 
    basename($filename); // il file e' pronto e puo' essere scaricato  
    exit; 
    mi salva un file con dentro la stringa file.html; già è qualcosa rispetto al file di dimensione zero che mi creava prima.

    Però a me interessa che stampi, anzichè la stringa file.html, il contenuto della pagina "pag1.html". Come posso fare?

    Originariamente inviato da Mistral82
    Spiego meglio, la pagina pag1.php è quella dove è presente:

    - codice html
    - form (che rimanda alla pagina pag2.php)

    Nella pagina pag2.php è presente invece solamente lo script php.

    Dovrei riuscire a salvare il testo html (presente in pag1.php) tramite lo script php (presente in pag2.php). E' sufficiente aggiungere l'istruzione che tu dici? Perchè il mio dubbio è sul come fare a inviare allo script php il codice html della pagina pag1.php.
    Spero di essermi spiegato...

  10. #10
    Prova cosi'

    Codice PHP:
    <?php 
    $filename 
    "file.html"

    $read_file=fopen("pag2.php","r"); 
    $dim_file filesize("pag2.php");
    $contenuto fread($read_file,$dim_file);
    fclose($read_file);

    header("Cache-Control: public");   
    header("Content-Description: File Transfer");   
    header("Content-disposition: attachment;filename=".$filename); 
    header("Content-type: application/force-download"); 
    header("Content-Transfer-Encoding: binary");   
    print 
    basename($contenuto); // il file e' pronto e puo' essere scaricato   
    exit;
    ?>

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 © 2024 vBulletin Solutions, Inc. All rights reserved.