Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Upload file .xls

  1. #1

    Upload file .xls

    Salve oh saggi .

    Avendo questo script:
    Codice PHP:
    <FORM ENCTYPE="multipart/form-data" ACTION="readex.php" METHOD="POST">
    Upload file: <INPUT TYPE="file" NAME="userfile">
    <INPUT TYPE="submit" VALUE="Upload">
    </FORM>

    <?php

    session_start
    ();

    // Image file upload by Bloody
    // [url]http://www.bloodys.com/[/url]
    // email: [email]info@bloodys.com[/email]
    // If you use this script, please put a link back to [url]http://www.bloodys.com/[/url]

    $foot "
    </div><div style=\"clear: both;\"> </div></div><div id=\"footer\">Elaborazione dei dati: <a href=\"http://www.mapoetto.altervista.org\">Elmapomapo sito 2008 &copy;</a> Designed by <a href=\"http://www.free-css-templates.com/\">Free CSS Templates</a>, Thanks to <a href=\"http://www.dubaiapartments.biz/villas/\" title=\"Dubai Apartments offers quality furnished hotel apartments, villas, and furnished properties on short term rental basis\" target=\"_blank\">Dubai Villas</a></div>

    </div></body> </html>"
    ;
    $user_path $_SESSION['username_2']."/";
    $path "../phpExcelReader/FoldUser/$user_path";
    $max_size 2000000;
    mkdir("../phpExcelReader/FoldUser/".$_SESSION['username_2'].""775);

    if (!isset(
    $HTTP_POST_FILES['userfile'])) exit;

    if (
    is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

    if (
    $HTTP_POST_FILES['userfile']['size']>$max_size) { echo "<font color=\"red\">Il file è troppo grande
    \n</font> 
    $foot"; exit; }
    if (
    $HTTP_POST_FILES['userfile']['type']=="application/xls" or $HTTP_POST_FILES['userfile']['type']=="text/xls" or $HTTP_POST_FILES['userfile']['type']==".xls" ) {

    if (
    file_exists($path $HTTP_POST_FILES['userfile']['name'])) { echo "<font color=\"red\">Il file esiste gi&agrave; ma puoi cambiare il nome(".$path $HTTP_POST_FILES['userfile']['name'].")
    \n</font> 
    $foot"; exit; }
    $name_file $HTTP_POST_FILES['userfile']['name'];
    $bla $path.$name_file;
    $res copy($HTTP_POST_FILES['userfile']['tmp_name'], $bla);
    if (!
    $res) { echo "<font color=\"red\">L'upload è andato male
    \n</font> 
    $foot";  } else { echo "Upload andato a buon fine!
    \n</font> 
    $foot"; exit;}

    echo 
    "File Name: ".$HTTP_POST_FILES['userfile']['name']."
    \n"
    ;
    echo 
    "File Size: ".$HTTP_POST_FILES['userfile']['size']." bytes
    \n"
    ;
    echo 
    "File Type: ".$HTTP_POST_FILES['userfile']['type']."
    \n"
    ;
    } else { echo 
    "<font color=\"red\">Il tipo di file non &egrave; consentito!

                   L'unico consentito &egrave; .xls</font> 
    $foot"; exit; }

    }

    ?>
    Quando vado a fare l'upload di un file .xls, dice che l'estensione non è accettata.
    Io penso che il problema sia risolvibile facilmente con l'inserimento dei parametri corretti nell' IF che verifica l'estensione.

    Help me

  2. #2
    Prima di tutto, sempre al posto di $HTTP_POST_FILES usa semplicemente $_FILES, visto che la prima è ormai deprecata e andrà a sparire.

    Detto questo, come puoi vedere anche nel manuale php,

    $HTTP_POST_FILES['userfile']['type']

    è una informazione che dovrebbe essere fornita dal browser dell'utente, quindi non ci puoi contare per nulla su, perchè... potrebbe essere vuota, o addirittura TRUCCATA appositamente.

    Quindi, hai due scelte, che io di solito applico entrambe: verificare l'estensione del file originale con questo codice:

    Codice PHP:
    $origname=$_FILES['userfile']["name"];
    $origext="";
    if ((
    $dotpos=_strrpos($origname,"."))!==false):
        
    $origext=_strtolower(_substr($origname,$dotpos,_strlen($origname)-$dotpos+1));
    endif; 
    che ti dà in $origext l'estensione del file originale (nel tuo caso sarebbe $origext="xls"), oppure usare la estensione fileinfo per verificare davvero il contenuto del file:

    Codice PHP:
    //se ho a disposizione la fileinfo la uso per verificare il file
    if (function_exists("finfo_open")):
        
    $finfo = @finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
        
    if ($finfo!==FALSE):
            
    $magicmime=@finfo_file($finfo$source);
            if (
    $magicmime===FALSE):
                
    $magicmime="";
            endif;
            
    finfo_close($finfo);
        endif;
    endif; 
    che ti dà in $magicmime il tipo mime del contenuto del file; nota che purtroppo non tutti gli hoster (anzi, in italia pochissimi) hanno la fileinfo attiva, cosa che probabilmente cambierà con PHP 5.3, che l'ha integrata e sempre attiva.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

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.