Karol K.

Karol K. Specjalista

Temat: [JavaScript]Wyświetlenie wielkosci pliku

Chce zliczyć i wyswietlic ile wazy dany plik ktory chce dodac. Nie wiem co jest nie tak. Jesli w tej linijce

[HTML]

alert(file.size + sizes); // zamienie sizes na jakis wyraz to wyswietla rozmiar
[/HTML]

Ale jak chcialbym miec to wartosc nie w bajtach tylko w zaleznosci od wielkosci zeby sie przeliczalo automatycznie.
Dzieki za pomoc.

[HTML]


<html>
<head>
<script type="text/javascript">

function GetFileInfo ()
{

var fileInput = document.getElementById ("fileInput");
for (var i = 0; i < fileInput.files.length; i++)
{
var file = fileInput.files[i];
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (file== 0){ return 'n/a';}
else{
var i = parseInt(Math.floor(Math.log(file) / Math.log(1024)));
return (file / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];

if ('size' in file) {
alert(file.size + sizes);
}


if(file.size>22220){
alert("Niestety przekroczyles limit");
}else{
alert("Limit dozwolony");
}
}}
}
</script>
</head>
<body onload="GetFileInfo() ">
<input type="file" id="fileInput" multiple="multiple" size="60" onchange="GetFileInfo ();" />
</body>
</html>
[/HTML]
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: [JavaScript]Wyświetlenie wielkosci pliku

google -> javascript file system security issues

konto usunięte

Temat: [JavaScript]Wyświetlenie wielkosci pliku

Da się i to dość prosto.


<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
// handler dla wrzucanych plikow
function handleFileSelect(evt) {

var files = evt.target.files; // lista plikow ktore wybralismy

var output = [];
for (var i = 0, f; f = files[i]; i++) {
// tworzymy liste
output.push('<li><strong>', f.name, '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate.toLocaleDateString(), '</li>');
}
// wsadzamy to do jakiegos diva
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}

// dodajemy event przy wyborze pliku w polu file
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>


Nie mam pojęcia czy będzie to działać w starszych przeglądarkach. Obstawiam że nie. Ale zawsze możesz taki feature dla nowych zrobić a użytkownicy IE niech cierpią w samotności.
Karol K.

Karol K. Specjalista

Temat: [JavaScript]Wyświetlenie wielkosci pliku

Niestety pod nanjowsza Mozilla to nie dziala...

konto usunięte

Temat: [JavaScript]Wyświetlenie wielkosci pliku

A powinno. Później zobaczę gdzie może tkwić problem i zrobię jakieś uniwersalne rozwiązanie. Teraz jestem deczko zajęty. Oderwałem się żeby kawę wypić. Rozwiązanie dla Mozilli (identyczne) jest na stronie dla developerów. Tutaj link:

https://developer.mozilla.org/en/Using_files_from_web_a...

Chodzi dokładnie o to:

<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>File(s) size</title>
<script type="text/javascript">
function updateSize() {
var nBytes = 0, oFiles = document.getElementById("uploadInput").files, nFiles = oFiles.length;
for (var nFileId = 0; nFileId < nFiles; nFileId++) {
nBytes += oFiles[nFileId].size;
}
var sOutput = nBytes + " bytes";
// optional code for multiples approximation
for (var aMultiples = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"], nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) {
sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)";
}
// end of optional code
document.getElementById("fileNum").innerHTML = nFiles;
document.getElementById("fileSize").innerHTML = sOutput;
}
</script>
</head>

<body onload="updateSize();">
<form name="uploadForm">
<p><input id="uploadInput" type="file" name="myFiles" onchange="updateSize();" multiple="multiple" /> selected files: <span id="fileNum">0</span>; total size: <span id="fileSize">0</span></p>
<p><input type="submit" value="Send file" /></p>
</form>
</body>
</html>
Karol K.

Karol K. Specjalista

Temat: [JavaScript]Wyświetlenie wielkosci pliku

Ten drugi kod co podales dziala idealnie:) Dzieki wielkie!!
To co mi podales mi sie przyda. Napisalem sobie w miedzy czasie taka funkcje

<html>
<head>
<script type="text/javascript">
function GetFileInfo () {
var fileInput = document.getElementById ("fileInput");
var s="";
for (var i=0; i<fileInput.files.length; i++) {
var file = fileInput.files[i];
s += ("id:" + file.id + " wielkosc pliku:" + file.size + " \r\n" + ",nazwa:" + file.name + ",uploaded:" + file.uploaded + ",error:" + file.error)+"\n";
}
alert(s);
}
</script>
</head>
<body onload="GetFileInfo ()">
<input type="file" id="fileInput" multiple="multiple" size="60" onchange="GetFileInfo ()" />
<div id="info" style="margin-top:30px"></div>
</body>
</html>


Nie wiesz co moze byc przyczyna " wielkosc pliku:undefinited" ?
Chce dodcelowo uzyskac wilekosc dodanego pliku i przekazac ja do php. Ale caly czas mi podaje undefinited.

konto usunięte

Temat: [JavaScript]Wyświetlenie wielkosci pliku

A masz jakiś plik wybrany ? Undefined sugeruje że nie znalazł takowej informacji. Pamiętaj by kod sprawdzić pod innymi przeglądarkami (fileAPI jest elementem HTML5 więc starsze odpadają) i upewnić się ze pod IE się nie wysypie (nie będzie działał ale przynajmniej niech nie powoduje błędów).

Napisz kiedy dostajesz taką wartość bo kodu nie sprawdzałem. Od tak wykopałem z czeluści developer.mozilla.org.

Ogólnie polecam zapoznać się z materiałami na:
https://developer.mozilla.org/en-US/
oraz:
http://www.html5rocks.com/

Bardzo ładnie zebrana wiedza dla front-endowców z wieloma przykładami. Zostaje tylko pomęczyć się z IE i możemy się cieszyć nowymi ficzerami. Ja od jakiegoś czasu zacząłem stosować HTML5 z prostym przeświadczeniem że użytkownik IE po prostu będzie miał mniej wygodniej. Tzn nie pozna nazwy pliku, nie zobaczy miniaturki przed wysłaniem i nie skorzysta z innych ficzerów jakie oferuje HTML5. To jego decyzja.
Jedyne co się upewniam to to żeby mógł nadal korzystać z serwisu w starszych IE. Tzn żeby nadal mógł np wysłać plik. Tylko "obrobić" go będzie mógł dopiero po wysłaniu.

PozdrawiamDariusz Półtorak edytował(a) ten post dnia 09.11.11 o godzinie 11:12
Karol K.

Karol K. Specjalista

Temat: [JavaScript]Wyświetlenie wielkosci pliku

Ja uzywam dhtmlx dokladnie:
http://docs.dhtmlx.com/doku.php?id=dhtmlxvault:working...
Przyklad z dokumentcji:

<div id="vaultDiv"></div>
<script>
vault=new dhtmlXVaultObject();
vault.setImagePath("codebase/imgs/");
vault.setServerHandlers("UploadHandler.php", "GetInfoHandler.php", "GetIdHandler.php");
vault.onUploadComplete = function(files) {
var s="";
for (var i=0; i<files.length; i++) {
var file = files[i];
s += ("id:" + file.id + ",name:" + file.name + ",uploaded:" + file.uploaded + ",error:" + file.error)+"\n";
}
alert(s);
};
vault.create("vaultDiv");
</script>

Jedyne co chce osiagnac to uzyskac size. Jak dodaje

+ ",size:" + file.size +


To zwraca mi alert "size:undefined". W tym przykladzie co wczesniej podalem gdy wybieram plik to pokazuje mi wartosc w bajtach. I nie mam juz pomyslu bo teoretycznie wszystko jest tak samo a nie dziala.
Ps. Na moje potrzeby nie jest az tak istotne zeby dzialalo pod IE, bede zadowolony gdy zadziala pod Mozilla:)Karol K. edytował(a) ten post dnia 09.11.11 o godzinie 11:41

Następna dyskusja:

JavaScript a programowanie ...




Wyślij zaproszenie do