Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Caricare solo file xls/xlsx

    Salve,
    sto cercando si risolvere un problema ma non ne vengo a capo in maniera efficiente.

    Ho un form al quale do in input un file che dovrò leggere e sul quale fare poi delle operione.
    Il tipo di file che devo però caricare deve essere necessariamente un file di tipo xls o xlsx.

    Per il momento il controllo che mi sono limitato a fare è quello relativo alle estensioni dei file che vengono caricati bloccando tutte quelle che differiscono da xls e xlsx nel seguente modo:

    $inputFileName_type = $_FILES['excel']['type'];
    if ( $inputFileName_type == "application/vnd.ms-excel" ||
    $inputFileName_type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" )

    Il problema sta per nel fatto che cambiando il controllo è facilmente aggirabile in quanto basta cambiare manualmente l'estensione del file caricato che questo controllo viene superato.

    Volevo sapere se poteva esserci un modo più efficace.

    Ho letto in giro una possibile soluzione, che può essere quella di andare ad analizzare il file da un punto di vista del codice esadecimale che lo compone andando a trovare una qualche sequenza di byte che si presenta in maniera sistematica all'interno del file di tipo xls e xlsx in modo tale da effetturare il controllo basandosi sulla lettura di questi byte.
    Solamente il mio problema è che non sono riuscito a trovare una qualche sequenza di byte sensata da poter usare per il controllo.

    Qualcuno di voi ha percaso avuto necessità di risolvere questo problema?

    Sarebbe abbastanza importante, se qualcuno fosse in grado di aiutarmi gliene sarei grato.

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    per essere certo dovresti controllare con un parser specifico (cerca qualche libreria che gestisce quei file, se esiste), ma intanto verifica anche $_FILES[...]['type'] per i file "uploadati"

  3. #3
    Si quel controllo con $_FILE[...][type] lo faccio, per adesso ma la cavo così:

    $inputFileName_type = $_FILES['excel']['type'];
    if ( $inputFileName_type == "application/vnd.ms-excel" ||
    $inputFileName_type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" )

    Utilizzo questo if, però è molto vulnerabile come cosa e cercavo qualcosa di più sicuro.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    cerca una libreria in grado di "parsare" il formato di tuo interesse: questa sarebbe la soluzione più vantaggiosa... in ogni caso suppongo tu farai delle elaborazioni con questi file... o no? come li gestisci?

  5. #5
    L'elaborazione a cui vengono sottoposti i fogli è la seguente

    1) carico i file
    2) leggo alcune informazioni messe in apposite celle che poi confronto con i dati inseriti in un database per vedere che tutte le informazioni del foglio excel siano corrette
    3) a questo punto prendo dei valori contenuti in altre celle e li sottopongo a delle operazioni per effettuare delle prove di qualità che mi dovranno dare come risualtato vero o falso
    4) stampo alla fine dei report con i risultati di tutti i test e le informazioni della macchina in questione

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    capisco... l'ideale come dicevo è usare una libreria che "parsi" questi file... in caso di errore vuol dire che qualcosa non va nel file... altre soluzioni sarebbero comunque parziali

  7. #7
    Ok ti ringrazio, vedrò cosa trovo in giro...per il momento non ho trovato niente che possa fare al caso mio.
    Continuerò a cercare.
    Se per caso ti capita di imbatterti in qualcosa che possa fare al caso mio e volessi suggerirmelo ti ringrazio.

    Grazie comunque!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    che s.o. c'è sul server? potresti anche considerare un qualche eseguibile da lanciare sul server solo per fare un "controllo" e quindi che non abbia un'interfaccia personalizzata php... richiami l'eseguibile per il controllo e "leggi" il risultato...

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.