Ciao, tramite un piccolo form su un sito, faccio caricare un file di word su un server e poi, finito il caricamento, invio il file caricato ad alcuni indirizzi mail..
Seppur il file caricato sul sito sia perfettamente leggibile (se scaricato da un qualsiasi browser web), il file che viene allegato è illeggibile (come quasi non fosse completo..)

I codici che uso sono i seguenti

Uno stralcio della pagina di upload

Codice PHP:
    echo "<form method=\"post\" action=\"upload_ok.php\" enctype=\"multipart/form-data\">\n";
echo 
"<input type=\"file\" name=\"file\" size=\"50\" id=\"file\">

\n"
;
echo 
"<input type=\"hidden\" name=\"path\" value=\"$path\">\n";
echo 
"<input type=\"hidden\" name=\"data_completa\" value=\"$data_completa\">\n";
echo 
"<input type=\"hidden\" name=\"year\" value=\"$year\">\n";
echo 
"<input type=\"hidden\" name=\"nome_file\" value=\"$nome_file\">\n";
echo 
"<input type=\"submit\" name=\"upload\" value=\"Carica\">\n";
echo 
"</form>\n

\n"

la pagina che poi, successivamente quando è richiamata dal form, invia il file

Codice PHP:
if ($_POST["upload"] != "") {
    
    
$path $_POST['path']; // passo il path sul server
    
$year $_POST['year'];  // passo l'anno, necessario per il path completo sul server
    
$data_completa $_POST['data_completa'];
    
$nome_file $_POST['nome_file'];
    
    
$allegato $_FILES["file"]["tmp_name"];  // nome file temporaneo che da il server al nostro file
    
$allegato_name $_FILES["file"]["name"];  // nome file che gli abbiamo passato da form
    
$allegato_type $_FILES["file"]["type"];  // tipo del file passato da form
    
    
$estensione_file substr($allegato_namestrripos($allegato_name'.')); // recupero l'estensione del file caricato
    
$nome_file $nome_file.$estensione_file// creo il nome file, formattato come voglio io, con l'estensione del file caricato
    
    
$path_completa $path.$year."/".$nome_file;
    
$path_url "http://www.server.it/pagina/archivio/".$year."/".$nome_file;
    
    if ( (
$_FILES["file"]["type"] != "application/vnd.openxmlformats-officedocument.wordprocessingml.document") and ($_FILES["file"]["type"] != "application/msword") )  {  //CHECK FILE .DOC o .DOCX
        
echo "[b]ATTENZIONE[/b]: 
E' possibile caricare solo file di testo che deve essere creato con Micorsoft Word (o programma compatibile) e salvato nel formato .doc oppure .docx
"
;
        }
        else { 
        
            if (!
move_uploaded_file($allegato$path_completa)) {
                echo 
"[b]ATTENZIONE[/b]: 
Si e' verificato un errore in fase di upoload. Ripova."
;
            }
            else
            {
                
$messaggio "In allegato a questa mail trovi pagina del ".$data_completa.".\n\nCiao, il Gruppo Liturgico\n\n\n--------\nQuesta mail e' mandata in maniera automatica.\nPer problemi o domande NON rispondere a questa mail ma contatta direttamente il Gruppo Liturgico.";
                echo 
"[b]Caricamento delle preghiere dei fedeli del ".$data_completa." eseguito con successo! [/b]
Il tuo file verra' automaticamente inviato al Gruppo .. 

<a href=\"index.php\">Ritorna alla Pagina Principale</a></p>\n"
;


//Per iniviare la mail
        
$oggetto "Paginai del ".$data_completa."";
        
$mittente "pagina@server.it"// Mail mittente
        
$mittente_nome  "scrittore";
        
function 
getSizeFile($url) { 
if (
substr($url,0,4)=='http') { 
$x array_change_key_case(get_headers($url1),CASE_LOWER); 
if ( 
strcasecmp($x[0], 'HTTP/1.1 200 OK') != ) { $x $x['content-length'][1]; } 
else { 
$x $x['content-length']; } 

else { 
$x = @filesize($url); } 

return 
$x

      
      
$file fopen($path_url,'rb');
      
$dimensione getSizeFile($path_url);
      
$data fread($file$dimensione); 
    
// Adatto il file al formato MIME base64 usando base64_encode
      
$data chunk_split(base64_encode($data));
      
fclose($file); 

  
  
// Genero il "separatore"
  // Serve per dividere, appunto, le varie parti del messaggio.
  // Nel nostro caso separerà la parte testuale dall'allegato
  
$semi_rand md5(time());
  
$mime_boundary "==Multipart_Boundary_x{$semi_rand}x";
  
  
// Aggiungo le intestazioni necessarie per l'allegato
  
$headers "From: $mittente_nome<$mittente>\n";
  
$headers .= "MIME-Version: 1.0\n";
  
$headers .= "Content-Type: multipart/mixed;\n";
  
$headers .= "boundary=\"{$mime_boundary}\"";
  
  
// Definisco il tipo di messaggio (MIME/multi-part)
  
$msg "This is a multi-part message in MIME format.\n\n";

  
// Metto il separatore
  
$msg .= "--{$mime_boundary}\n";

  
// Questa è la parte "testuale" del messaggio
  
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
  
$msg .= $messaggio  "\n\n";

  
// Metto il separatore
  
$msg .= "--{$mime_boundary}\n";

  
// Aggiungo l'allegato al messaggio
  
$msg .= "Content-Type: {$allegato_type}\n";
  
$msg .= "filename=\"{$nome_file}\"\n";
  
$msg .= "Content-Transfer-Encoding: base64\n\n";
  
$msg .= $data "\n\n";

  
// chiudo con il separatore
  
$msg .= "--{$mime_boundary}--\n";        
        
        
mail("prova@gmail.com"$oggetto$msg$headers); //Mail di prova a me per vedere se tutto è andato bene !!



            
}
        
        } 
        

}
?> 
Mi sapreste dire cosa non va ?

GRAZIE