声明: 不用IE控件(ActiveXObject)不用 Img属性
最好 使用 Jquery
最好 使用 Jquery
解决方案 »
- JS类中$()怎么理解,很难很难...
- 谁使用过userdata啊?怎样设置userdata的存储容量啊?
- 如何根据条件改变table单元格的颜色?
- 请问那个控件叫什么
- 在前台的javascript中如何读取cooikes的值
- 网页框架后退
- 请问javascript里面有没有类似jsp里面replaceAll的函数?
- 如何使用javascript实现一个在线编辑功能的编辑器??
- 怎么判断文本框中输入的有中文字符?
- 用php和js怎么把订单数据传送到后台呢,还有第二页还可以修改数量
- 关于Ext.ux.ManagedIFrame的原理,请各位大神分析一下
- extjs gridPanel不能显示数据
在页面无刷新显示上传文件byte即可
<input type="file" name="file1" onchange="ShowSize(this.value)">
<script language="JavaScript">
<!--
function ShowSize(files)
{
var fso,f;
fso=new ActiveXObject("Scripting.FileSystemObject");
f=fso.GetFile(files);
if(f.size>1024*4){
alert(f.size+" Bytes");
}
}
//-->
</script>
</html>第二种方法是利用IE下,Image对象的属性,如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters限制:<input type="text" size="4" value="10" name="fileSizeLimit" id="fileSizeLimit"/> K
<input type="file" name="file1" id="file1" size="40" onchange="changeSrc(this)"/>
<img src="about:blank" id="fileChecker" alt="test" height="18"/><script type="text/javascript">
var oFileChecker = document.getElementById("fileChecker");function changeSrc(filePicker)
{
oFileChecker.src = filePicker.value;
}oFileChecker.onreadystatechange = function ()
{
if (oFileChecker.readyState == "complete")
{
checkSize();
}
}function checkSize()
{
var limit = document.getElementById("fileSizeLimit").value * 1024; if (oFileChecker.fileSize > limit)
{
alert("too large");
}
else
{
alert("ok");
}
}
</script>JS实现多个上传附件的FILE文件域代码<style type="text/css"> .file { font: 10pt; color: black; } </style>
<script language="javascript">
function addFile() {
var fileDiv = document.all['fileDiv'];
var strHtml = '<span><input type="file"> <button onclick="removeFile(parentNode);">删除</button><br></span>';
fileDiv.innerHTML += strHtml;
}
function removeFile(obj) {
obj.removeNode(true);
}
</script>
<form enctype="multipart/form-data">
<div id="fileDiv"></div>
<a href="javascript:void(addFile());" class="file">添加附件</a>
</form>
1.<input type="file" id="fileText">
2.<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">
3.
4.
5.<script type="text/javascript">
6.var Sys = {};
7.if(navigator.userAgent.indexOf("MSIE")>0)
8.{
9. Sys.ie=true;
10.}
11.if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)
12.{
13. Sys.firefox=true;
14.}
15.
16.function checkFileChange(obj)
17.{
18. var filesize = 0;
19.
20. if(Sys.firefox)
21. {
22. filesize = obj.files[0].fileSize;
23. }else if(Sys.ie)
24. {
25. var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象
26. var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件
27. var filesize = file.Size;//文件大小
28. }
29. alert(filesize);
30.}
31.</script>
Img属性 浏览器不兼容只能通过ajax向服务器段发送请求,然后就像在服务器端直接获取大小就怎么来返回给客户端就OK
或者传给服务器端
用这个软件,相当好用.是JQ+Flash实现文件上传的,可以获取上传文件的各种详细信息.
说的还是比较详细的,如果还是看不懂,可以给你个我自己写的例子(C#)的
留下mail
参考cloudgamer的文件预览要做到浏览器兼容应该是必须先传到服务器上的
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
<script type="text/javascript">
var isIE = /msie/i.test(navigator.userAgent) && !window.opera; var sizeLabel = ["B", "KB", "MB", "GB"];
function fileChange(target) { var fileSize = 0;
if (isIE && !target.files) {
var filePath = target.value;
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var file = fileSystem.GetFile (filePath);
fileSize = file.Size;
} else {
fileSize = target.files[0].size;
}
displayFileSize(fileSize);
} function displayFileSize(size) {
var fileSize = document.getElementById("fileSize");
fileSize.innerHTML = calFileSize(size);
} function calFileSize(size) {
for (var index = 0; index < sizeLabel.length; index++) {
if (size < 1024) {
return round(size, 2) + sizeLabel[index];
}
size = size / 1024;
} return round(size, 2) + sizeLabel[index];
} function round(number, count) {
return Math.round(number * Math.pow(10, count)) / Math.pow(10, count);
}
</script>
</head>
<body>
<div>
<input type="file" onchange="fileChange(this);">
</div>
<div id="fileSize">
</div>
</body>
</html>全浏览器兼容,其中files[0].size是利用了html5的内容。已经在IE6,IE7,Firefox3.5,Chrome5上测试通过
原理为,
1。如果是最新的浏览器。(有.files属性)就直接取得
2。如果是老土的浏览器。用Flash返回,如果没有Flash,考虑用applet。如果要做的简单点,上面的代码已经完全满足了
从性能上,你用AJAX,比上传到服务器验证大小多了一道手续。
所以最简单的方法,就是在页面上明确提示上传文件的最大大小。然后上传后判断,超出大小的责任由用户自己负责,毕竟他在选择文件时是可以看到文件大小的。
for (var i = 0; i < files.length; i++) {
var file = files[i];
alert(file.name + ' ' + file.size + ' ' + file.type);
}
}来源:https://developer.mozilla.org/en/Using_files_from_web_applications
在服务端判断超过大小,返回客户端的时候,这个时候文件是已经上传到服务器了,时间是非常长的,还是没达到目的,怎么办啊