Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296

    Ricerca della dimensione di un file

    Buonasera a tutti,
    dato un file (in locale), del quale dovro poi fare una upload, cerco di rilevare la sua dimensione per trasferire solo file più piccoli di una determinata grandezza.
    Ho provato tramite la funzione filesize("nome_file"), ma ricevo un warning di questo tipo:

    Warning: filesize(): stat failed for nome_file in C:\xampp\htdocs...

    ed, ovviamente non mi restituisce nulla.

    Ho fatto qualche ricerca sul web, ma non sono giunto a nulla, mi dareste una mano?

    Grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il file si trova all'interno dello spazio web? Se sta fuori non lo puoi raggiungere, PHP non ha i permessi di andare più su della root dello spazio web.
    Fagli caricare il file, una volta ricevuti i dati verifichi su $_FILE[] quanto sia grande il file caricato e decidi se va bene (muovi il file temporaneo nella posizione definitiva) oppure no (torni al form mostrando un messaggio d'errore ricordando quale sia la dimensione massima consentita).

  3. #3
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Il file si trova all'interno dello spazio web? Se sta fuori non lo puoi raggiungere, PHP non ha i permessi di andare più su della root dello spazio web.
    Fagli caricare il file, una volta ricevuti i dati verifichi su $_FILE[] quanto sia grande il file caricato e decidi se va bene (muovi il file temporaneo nella posizione definitiva) oppure no (torni al form mostrando un messaggio d'errore ricordando quale sia la dimensione massima consentita).
    Grazie Alhazred,
    Quello che vorrei fare è di intercettare la grandezza del file prima di fare l upload. Il file ovviamente si trova in locale(sul mio pc). Ho necessità di verificare la dimensione perché il provider sul quale faccio l'upload ha delle restrizioni a riiguardo. Non posso agire sul $_FILES perché questo agisce sul server. Spero di essere stato chiaro.
    Grazie mille.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Allora se devi operare sul client, PHP è out, PHP lavora solo sul server.
    Chiedi in Javascript, magari puoi prendere con quello la dimensione del file, inviarla ad uno script php con ajax ed ottenere una risposta per la validazione.

  5. #5
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Allora se devi operare sul client, PHP è out, PHP lavora solo sul server.
    Chiedi in Javascript, magari puoi prendere con quello la dimensione del file, inviarla ad uno script php con ajax ed ottenere una risposta per la validazione.
    Si, giusto, lami torna il discorso. Provo a studiare la faccenda con javascript.
    Grazie ancora

  6. #6
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Ho trovato la soluzione in javascript...
    non so se è corretto postarla qui, ma magari qualcuno la troverà utile cercandola in php. Eventualmente chi di dovere la sposterà...
    codice HTML:
    <html>
    <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <title>Dimensione del file</title>
    <script type="text/javascript">
    function updateSize() {
        var dimensione = document.getElementById("uploadFile").files[0].size;
        document.getElementById("fileSize").innerHTML = dimensione;
        if (dimensione > 20000000) {
            document.getElementById("messaggio").innerHTML = "File di dimensioni troppo elevate";
        }
    }
    </script>
    </head>
    <body onload="updateSize();">
    <form name="uploadForm">
    <input id="uploadFile" type="file" name="myFile" onchange="updateSize();" /> (dimensione: <span id="fileSize">0</span> bytes)</p>
    <input type="submit" value="Invia file" /></p>
    <span id="messaggio" ></span>
    </form>
    </body>
    </html>

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì, ma la validazione lato PHP devi comunque farla, non ci vuole niente a cambiare il valore che hai messo come limite modificando la pagina sul browser.
    Se poi quello lì è anche il limite consentito dal server non succederà nulla, ma ad ogni modo un controllo con PHP lo farei ugualmente quando arrivano i dati del form.

    Edit: scusa... 20MB?

  8. #8
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Infatti, quello è il limite consentito dal server. Il mio tentativo è di evitare lunghe attesa prima di avere restituito il diniego dell'upload.
    Effettivamente avrei dovuto fare la validazione lato server, ma non è possibile poichè prima di poter effettuare la validazione sul $_FILE["file-zize"], viene generato l'upload che, inevitabilmente, per file grandi, va in errore.

    Sì, ho file anche di 100 MB. Purtroppo sono stati generati male, ma sono davvero tanti per poter pensare di intervenire in qualche modo.

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.