è possibile sapere la dimensione di un file caricato da un form?
è possibile sapere la dimensione di un file caricato da un form?
.....ok
in realtà si può fare con ajax. L'unica condizione è che il file si trovi sullo stesso dominio dello script, per le limitazioni dell'oggetto XMLHTTPRequest()
Ecco lo script
codice:<html> <head> <script type="text/javascript"> // ****************************** // /* Author : Fabrizio Calderan * Date : 2005.11.14 * Url : http://www.fabriziocalderan.it */ function filesize(file, id) { var xmlHttpObj = null; var size = null; if (typeof XMLHttpRequest != "undefined") { xmlHttpObj = new XMLHttpRequest(); } else { try { xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttpObj = null; } } } xmlHttpObj.open("HEAD", file, true); xmlHttpObj.onreadystatechange = function() { if (xmlHttpObj.readyState == 4) { switch(xmlHttpObj.status) { case 200: // Page found case 304: // Status Code on Opera when page reload size = xmlHttpObj.getResponseHeader("Content-Length"); document.getElementById(id).innerHTML = size; return; break; case 0: // Worong protocol alert("Can't load file using 'file://' protocol") return; break; case 404: // Page not found alert("File not found: "+file); return; break; default: alert("Unrecognized status code: ["+xmlHttpObj.status+"]") return; break; } } } xmlHttpObj.send(null); delete xmlHttpObj; } </script> </head> <body> File: magnolia.pdf - Size: <span id="magnolia_size"> </span> <script type="text/javascript"> filesize('magnolia.pdf', 'magnolia_size'); </script> </body>
Come funziona??? Ho messo un file pdf nella stessa cartella dello script. Il file si chiamava magnolia.pdf. La funzione filesize accetta due parametri:
- il nome del file
- l'id del placeholder (segnaposto) in cui scrivere la dimensione del file
Ovviamente lo script va posto _dopo_ l'elemento segnaposto.
Salvate il codice com file .html e provatelo in un webserver (anche locale) e mettendo un file a vs scelta da controllare
Enjoy.
Fabrizio
![]()
![]()
(tags: dimensione file javascript file size)
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
no io devo ricavare la dimensione di un file uppato![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
dopo che l'hai uppato lo posizioni in una cartella sul server, lo rinomini con il nome che vuoi e lo controlli con questo script, no??![]()
Altrimenti usi un linguaggio lato server tipo quello che hai come avatar![]()
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
lo so però il mio problema è che sto facendo una barra di avanzamento di upload..capisci?? devo sapere la dimensione attuale uppata (e so come) e quella totale
in effetti la tua domanda ora è un (bel pò) differente dalla prima...
all'inizio chiedevi della dimensione di un file _caricato_
mentre quello che volevi tu era una progress bar _durante_ l'upload...
![]()
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
si se sapessi la dimensione l'ho già fatta..
carica l'oggetto piu' avanzato e facilmente aggiornabile la lista degli oggetti, al posto di mettere sempre il risultato dentro un div si possono trattare i dati come si vogliono all'interno di una funzione... dell'oggetto si puo' utilizzare sia il contenuto che sapere la sua dimensione
codice:<!--- // ****************************** // /* Author : Fabrizio Calderan * Date : 2005.11.14 * Url : http://www.fabriziocalderan.it Modificated : Sottana Marco Date : 2005.11.15 Url : http://www.brain-farm.com Icq : 210139517 */ -----> <html> <head> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> function funf(e){ f=document.getElementById("div_id"); f.innerHTML=""+ e.text + " "; f.innerHTML+="size = "+ e.size + ""; } </SCRIPT> <script type="text/javascript"> function createXMLHttp() { var xmlhttp ; try { xmlhttp = new XMLHttpRequest(); // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera, Internet Explorer 7 } catch (e) { var MSXML_XMLHTTP_PROGIDS = new Array( 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', // Internet Explorer 6 'Microsoft.XMLHTTP' // Internet Explorer 4,5 ); var success = false; for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) { try { xmlhttp = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]); success = true; } catch (e) {} } if ( !success ) { alert('Cant create XMLHttpRequest - not supported'); } } return xmlhttp; } function getFile(file,callbackFunction) { var xmlHttpObj = null; xmlHttpObj=createXMLHttp(); // xmlHttpObj.open("HEAD", file, true); xmlHttpObj.open('get', file); xmlHttpObj.onreadystatechange = function() { if (xmlHttpObj.readyState == 4) { switch(xmlHttpObj.status) { case 200: // Page found case 304: // Status Code on Opera when page reload this.size = xmlHttpObj.getResponseHeader("Content-Length"); this.text = xmlHttpObj.responseText; callbackFunction(this); return; break; case 0: // Worong protocol alert("001 Can't load file using 'file://' protocol") return; break; case 404: // Page not found alert("002 File not found: "+file); return; break; default: alert("003 Unrecognized status code: ["+xmlHttpObj.status+"]") return; break; } } } xmlHttpObj.send(null); delete xmlHttpObj; } </script> </head> <body> <div id="div_id"> </div> carica </script> </body>