首选推荐一个别人做好的插件:uploadify
这个下载这个看看还有上传进度条。但是这个是基于 flash实现的。很多手机上面没有这个就不能用了。
我用的是 iframe实现的。把上传控件input=file单独放到一个页面。然后单独提交这一个iframe。从而实现无刷新。
在js中判断上传文件的大小
function fileChange(target) {
var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
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;
}
var size = fileSize / 1024;
if (size > 500) {
alert("附件不能大于500k");
parent.CloseTitle();
return false;
}
return true;
}
<input type="file" name="contractFileName" style="width: 500px;" οnchange="fileChange(this);"/>
这样可以在js就判断文件的大小。不用放到服务器判断。如果放到服务器判断要是网速很慢的话,需要等半天才有提示。
input=file限制后缀名。
可以在选择以后用js判断选择的后缀名是不是合法的,但是这样用户体验不太好。
最直接的办法就是在弹出选择框的时候直接过滤掉,
<input type="file" id="file1" accept="image/png,image/bmp,image/jpg,image/jpeg" />
通过accept属性就可以。
这个有浏览器兼容问题,尤其是低版本的ie或者是火狐。加上总比没有好一点。
这个下载这个看看还有上传进度条。但是这个是基于 flash实现的。很多手机上面没有这个就不能用了。
我用的是 iframe实现的。把上传控件input=file单独放到一个页面。然后单独提交这一个iframe。从而实现无刷新。
在js中判断上传文件的大小
function fileChange(target) {
var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
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;
}
var size = fileSize / 1024;
if (size > 500) {
alert("附件不能大于500k");
parent.CloseTitle();
return false;
}
return true;
}
<input type="file" name="contractFileName" style="width: 500px;" οnchange="fileChange(this);"/>
这样可以在js就判断文件的大小。不用放到服务器判断。如果放到服务器判断要是网速很慢的话,需要等半天才有提示。
input=file限制后缀名。
可以在选择以后用js判断选择的后缀名是不是合法的,但是这样用户体验不太好。
最直接的办法就是在弹出选择框的时候直接过滤掉,
<input type="file" id="file1" accept="image/png,image/bmp,image/jpg,image/jpeg" />
通过accept属性就可以。
这个有浏览器兼容问题,尤其是低版本的ie或者是火狐。加上总比没有好一点。