客户端js校验文件上传格式与文件大小
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 564
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>
            Firefox3,IE6,IE7,IE8上传图片预览
        
</title>
        <style type="text/css">
            #preview_wrapper{ 
                display
:inline-block; width:300px; height:300px; background-color:#CCC;
            } 
            #preview_fake
{ 
                filter
:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
            } 
            #preview_size_fake
{ 
                filter
:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
                visibility:hidden; 
            
} 
            #preview
{ width:300px; height:300px; }
        </style>
        <script type="text/javascript">
            function onUploadImgChange(sender) {
                
var filePath = sender.value;
                
var fileExt = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
                
if (!checkFileExt(fileExt)) {
                    alert(
"您上传的文件不是图片,请重新上传!");
                    
return;
                }

                
var objPreview = document.getElementById('preview');
                
var objPreviewFake = document.getElementById('preview_fake');
                
var objPreviewSizeFake = document.getElementById('preview_size_fake');
                
try {
                    
if (sender.files && sender.files[0]) {
                        objPreview.style.display 
= 'block';
                        objPreview.style.width 
= 'auto';
                        objPreview.style.height 
= 'auto';

                        
// Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
                        objPreview.src = sender.files[0].getAsDataURL();
                        
//读取图片文件大小
                        fileSize = sender.files[0].fileSize;
                        checkFileSize(sender, fileSize);

                    } 
else if (objPreviewFake.filters) {
                        
// IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果
                        //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决

                        // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
                        sender.select();
                        
var imgSrc = document.selection.createRange().text;

                        objPreviewFake.filters.item(
'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
                        objPreviewSizeFake.filters.item(
'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;

                        autoSizePreview(objPreviewFake, objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight);
                        objPreview.style.display 
= 'none';
                        
//读取图片文件大小               
                        var sh = setInterval(function() {
                            
var img = document.createElement("img");
                            img.src 
= imgSrc;
                            fileSize 
= img.fileSize;
                            
if (fileSize > 0) {
                                checkFileSize(sender, fileSize);
                                clearInterval(sh);
                            }
                            img 
= null;
                        },
                        
100);
                    }
                } 
catch(e) {
                    alert(
"您上传的文件过大或者不是图片,请重新上传!");
                }
            }

            
function onPreviewLoad(sender) {
                autoSizePreview(sender, sender.offsetWidth, sender.offsetHeight);
            }

            
function autoSizePreview(objPre, originalWidth, originalHeight) {
                
var zoomParam = clacImgZoomParam(300300, originalWidth, originalHeight);
                objPre.style.width 
= zoomParam.width + 'px';
                objPre.style.height 
= zoomParam.height + 'px';
                objPre.style.marginTop 
= zoomParam.top + 'px';
                objPre.style.marginLeft 
= zoomParam.left + 'px';
            }

            
function clacImgZoomParam(maxWidth, maxHeight, width, height) {
                
var param = {
                    width: width,
                    height: height,
                    top: 
0,
                    left: 
0
                };

           &
联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2