ie下好像有安全性问题,用fso或者activex都不怎么合适,flash也很麻烦,在模态窗口中像uploadfy.js这类型的上传插件都用不了,有人又其它办法吗?
应该没有,游览器没有这么大的权限
那像163邮箱,qq邮箱是怎么做到的?
@legend_zm: 163没有做到,QQ邮箱是做到了,大附件上传组件,太漂亮了
JS无法获取本地文件属性,权限不够。
如果可以的话上网还有什么安全可言,随便在网页上放个js就把你电脑中的岛国片共享了
163通过flash实现,QQ通过浏览器插件实现
js参考:
var ImgObj = new Image();
var right_type = new Array(".gif", ".jpg", ".jpeg", ".png", ".bmp");
function ChangeSrc(idImg) {
if (!CheckImgType(idImg)) {
alert("File format is not correct");
return false;
}
var ImgObj = new Image();
ImgObj.src = idImg;
if (!CheckFileSize()) {
return false;
}
return true;
}
/**
判断上传文件格式是否正确
*/
function CheckImgType(fileURL) {
//本程序用来验证后缀,如果还有其它格式,可以添加在right_type;
var right_typeLen = right_type.length;
var imgUrl = fileURL.toLowerCase();
var postfixLen = imgUrl.length;
var len4 = imgUrl.substring(postfixLen - 4, postfixLen);
var len5 = imgUrl.substring(postfixLen - 5, postfixLen);
for (i = 0; i < right_type.length; i++) {
if ((len4 == right_type[i]) || (len5 == right_type[i])) {
return true;
}
}
return false;
}
/**
判断要上传的图片文件大小、长度和宽度!
*/
function CheckFileSize() {
var limit = 300 * 1024;
var width = 500;
var height = 500;
if (ImgObj.fileSize > limit) {
alert("File size is too large!");
return false;
}
if (ImgObj.height > height) {
alert("File height is larger than 500px!");
return false;
}
if (ImgObj.width > width) {
alert("File width is larger than 500px!");
return false;
}
return true;
}
这种方式子在ie里是不行的,权限问题
@legend_zm: 我的例子就是在IE里面执行的
上传到服务器取大小,用HttpWorkerRequest,获取文件头中的文件大小后直接返回。
需要在前端获取,后台就容易了
@legend_zm:
前台当然不行啦,需要用插件或后台获取,我说的后台是指通过HttpWorkerRequest上传文件头获取大小,不需要上传整个文件。
为了安全考虑,好像是不行。
放弃吧,javascript 没有这种权限。
163通过flash实现,QQ通过浏览器插件实现
如果能获取不是太危险了?
图片的可以获取,其他文件没有试过
他们都是flash