Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Scaricare file diverso da pdf

    Ciao a tutti,
    esiste questa funzione header

    header("Content-type: application/pdf");

    per salvare un file in formato pdf, ma nel momento in cui ho diversi file con diverse estensioni ad esempio, doc, xls, pps ecc. come faccio a far fare il salvataggio all'utente?

    Ho provato con header("Content-type: application/doc"); ma non mi riesce ad aprire il file una volta salvato.

  2. #2
    prova con:

    header("Content-type: application/msword");

    per gli altri formati eccoti un elenco dei mimetypes:
    http://www.phpfreaks.com/mimetypes.php
    Siteland - Software & Web
    Poolgest - Gestionale per piscine e centri sportivi

  3. #3
    Mi pare che sotto windows se fai "strumenti cartella" o "opzioni cartella" (non ricordo l'etichetta giusta) e vai a vedere le associazioni dei vari files, trovi anche il mime delle varie estensioni.
    Cmq Google rimane la cura di tutti i mali.
    wip.. http://www.virgolamobile.net

  4. #4
    Ho provato a utilizzare i mimtypes seggeritemi da kall3, ma ho ancora dei problemi. I file ppt non li riconosce, mentre i doc non li riesce a codificare infatti mi escono tanti quadretti e simboli strani.

  5. #5
    Sapete cos'ho notato?
    Con i file txt usando text/plain mi salva il file txt, aggiungendomi all'inizio della prima riga .txt.

    Forse è per questo che non funzionano gli altri? Xkè aggiunge una stringa che non riconoscono?

  6. #6
    readfile legge testo, tu devi leggere binario.

    codice:
    ##################################
    # Prende un file 
    # -------------------------------+
    # string getFile(string $fileName)
    ##################################
    function getFile($fileName) {
     global $basedir;
     if($file = fopen($basedir . $fileName, "rb")) {
      $data = '';
      while (!feof($file)) {
       $data .= fread($file, 8192);
      }
      fclose($file);
      return $data;
     } else {
      return FALSE;
     }
    }
    
    
    // la tua repository
    define('BASEDIR','../documenti/')
    
    // puoi stampare $output come visto nell'altro thread
    $output = getFile($_POST['filename']);
    wip.. http://www.virgolamobile.net

  7. #7
    Mi dà questo errore:

    Warning: readfile("ÐÏࡱá") - Invalid argument


    Il codice che ho scritto è questo:

    $pdf=$_POST['pdf'];

    function getFile($fileName) {
    if($file = fopen("../documenti/".$fileName, "rb")) {
    $data = '';
    while (!feof($file)) {
    $data .= fread($file, 8192);
    }
    fclose($file);
    return $data;
    } else {
    return FALSE;
    }
    }

    header('Content-type: application/msword');
    header('Content-Disposition: attachment; filename="downloaded.doc"');
    $file=getFile($pdf);
    readfile($file);

  8. #8
    Comincio ad avere il vaghissimo sospetto che tu stia facendo copia ed incolla un po' a caso.


    codice:
    <?php
    
    $pdf=$_POST['pdf'];
    
    function getFile($fileName) {
     if($file = fopen("../documenti/".$fileName, "rb")) {
      $data = '';
      while (!feof($file)) {
       $data .= fread($file, 8192);
    
      }
     
      fclose($file);
      return $data;
      } else {
       return FALSE;
      }
    }
    
    if(!header_sent()) {
     header('Content-type: application/msword');
     header('Content-Disposition: attachment; filename='. $filename);
    
     echo getFile($pdf);
    }
    ?>
    wip.. http://www.virgolamobile.net

  9. #9
    Adesso funziona grazie mille, ma mi spiegheresti dove era il problema?? Dove sbagliavo??

  10. #10
    inizialmente leggevi i file binari come testo: non è salutare.
    poi dopo facevi un readfile alla fine invece di stampare l'output.

    Quando scrivi questa roba ed hai qualche dubbio, prova a ragionare in ordine:

    Cosa deve fare?
    Leggere un file, poi 'stamparlo'.

    Come apro il file?
    Lettura, scrittura, etc..

    Come lo leggo?
    binario o no

    Stampa del file?
    Content-type

    La funzione che ti ho scritto tira su 8K per volta in sola lettura/binario ('rb'), li bufferizza e restituisce il file una volta ricomposto.
    A quel punto se non sono già stati inviate intestazioni (header_sent) provvede a:
    .a invio il content-type
    .b definisco il modo di ricezione (attachment + filename)
    .c emissione dei dati (echo)

    ciao
    wip.. http://www.virgolamobile.net

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.