关于js上传文件的校验以及预览

花了一上午的时间理了下思路,整理了下上传方面的问题。主要是关于格式的校验以及大小和数量的校验,可能有部分缺失,望大家提出,及时修正。

<!DOCTYPE html>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>文件上传测试</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            a{
                text-decoration: none;
            }
            .filec{
                display: block;
                position: absolute;
                top: 0;
                left: 0;
                width: 180px;
                height: 39px;
                cursor: pointer;
                opacity: 0;
                filter:alpha(opacity: 0);
            }
            .xhx{
                width: 100px;
                height: 30px;
                border-bottom: 1px solid #000;
                display: inline-block;
                line-height: 24px;
            }
            .button{
                width: 80px;
                height: 39px;
                line-height: 39px;
                border: 0;
                border-radius: 3px;
            }

        </style>
    </head>

    <body>
            <div class="xhx" id="xhx">
                请上传文件
            </div>
            <input type="button" class="button" name="" id="" value="点我上传" />
        <input type="file" class="filec" name="test" id="file" onchange="javascript:setImagePreview();">
        <div id="imgxx"></div>
        <script type="text/javascript">
            //单图片上传
            function setImagePreview() {
                var path = document.getElementById("file").value;
                //            alert(path);
                //            分离名称和后缀
                var path1 = path.split(".");
                var path2 = path1[path1.length - 1].toLowerCase()
                    //            判断格式
                if(path2.localeCompare(‘docx‘) === 0 || path2.localeCompare(‘doc‘) === 0 || path2.localeCompare(‘pdf‘) === 0) {
                    //                alert("true");
                    //                alert(path2);
                    //            去除路径和后缀名,取文件名称
                    var pos1 = path.lastIndexOf("\\");
                    //            alert(pos1);
                    var pos2 = path.lastIndexOf(".");
                    //            alert(pos2);
                    var pos = path.substring(pos1 + 1, pos2);
                    var text =path.substring(pos1+1);
                    document.getElementById("xhx").innerHTML=text;
                    alert("上传成功");
                    //            alert(pos);
                    //            获取文件地址  本地预览
                    var file = document.getElementById("file");
                    var objectURL = window.URL.createObjectURL(file.files[0]);
//                    alert(objectURL);
                } else if(path2.localeCompare(‘jpg‘) === 0 || path2.localeCompare(‘png‘) === 0) {
                    var pos1 = path.lastIndexOf("\\");
                    //            alert(pos1);
                    var pos2 = path.lastIndexOf(".");
                    //            alert(pos2);
                    var pos = path.substring(pos1 + 1, pos2);
//                    alert("上传成功");
                    var file = document.getElementById("file");
                    var objectURL = window.URL.createObjectURL(file.files[0]);
//                    alert(objectURL);
                    //            判断大小
                    //             var obj_img = document.getElementById(‘tempimg‘);
                    //           obj_img.dynsrc=obj_file.value;
                    filesize = file.files[0].size;
//                    alert(filesize);
                    var imgmax = 2 * 1024 * 1024;
                    if(filesize > imgmax) {
                        alert("文件大小超出范围");
                    } else {
                        alert("上传成功");
                        //            创建图片元素
                        var imgxx = document.getElementById("imgxx");
                        //            添加img
                        var img = document.createElement("img");
                        var div = document.createElement("div");
                        img.setAttribute("id", pos); 
                        div.setAttribute("id", pos);
                        imgxx.appendChild(img);
                        imgxx.appendChild(div);
                        div.innerHTML=‘<a title="移除本图片" href="javascript:void(0);" style="float: left;margin-left: -22px;z-index: 22;background: #fff;">×</a>‘
                        img.width = "100";
                        img.src = objectURL;
                        img.style.float="left"
                        img.style.marginLeft="20px"
                        div.setAttribute("onclick", "javascript:removeElement(this)");   
                        var imglength = document.getElementById("imgxx").getElementsByTagName("img").length ;
//                        alert(imglength);
                        if(imglength>3){
                            alert("上传完毕");
                            file.style.display="none";
//                            alert(file.display);
                        }
                    }
                } else {
                    alert("请上传正确的格式");
                }
            }
//            删除图片
            function removeElement(_element){
         var _parentElement = _element.parentNode;
         var id=_element.id;
         document.getElementById(id).innerHTML = "";
         document.getElementById(id).remove();
         document.getElementById(id).remove();
         file.value = "";
         return;
}
        </script>
    </body>
</html>

  

时间: 2024-12-11 06:02:57

关于js上传文件的校验以及预览的相关文章

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!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> &

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

Node.js上传文件

var formidable = require('formidable'); var util = require('util'); exports.upload = function(req,res){ var form = new formidable.IncomingForm(); form.encoding = 'utf-8'; form.uploadDir = "E:/file/upload";//目录需要已存在 /** * fields 表单中的其他属性 * files

Jquery AjaxFileUpload.js 上传文件 所遇问题解决办法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">导入 AjaxFileUpload.js 文件</span> js代码 $.ajaxFileUpload({ url: 'upload',//处理图片脚本 secureuri : false, fileElementId : 'uploadImg',//file控件id da

原生js上传文件 显示进度条

最近在做文件上传的功能,因为界面设计比较简单,就没有引用jq,但是网上大部分的上传插件都需要jq的支持.为了一个上传功能引用90多k的jq文件有点太小题大做了,所以就自己动手写了一个原生js上传的demo.下面是代码: HTML代码 <html> <head> <title></title> </head> <body> <input type="file" id="f" /> &l

前端js上传文件 到后端接收文件

下面是前端js代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>File upload</title> </head> <body> <!-- // action="fileupload"对应web.xml中<se

js上传文件

一.原始的XMLHttpRequestjs上传文件过程(参考地址:http://blog.sina.com.cn/s/blog_5d64f7e3010127ns.html) 用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码:

原生js上传文件,使用new FormData()

当创建一个内容较多的表单,表单里面又有了文件上传,文件上传也需要表单提交,单一的上传文件很好操作: <form action="接口" enctype="multipart/form-data" method="post"> <input type="file" name="uploadFile"/> <input type="submit" value=&

[原创]使用ajaxFileUpload.js上传文件时附带额外参数。

最近公司的一个项目涉及到导入Excel的功能,于是就想到用ajaxFileUpload来实现上传文件,因为用过很多次了,网上也有很多文章介绍.使用方法不表.但是在附带参数这个环节卡住了:文件可以上传到后台,但是附带的json参数怎么都传不到后台. 通过网上的文章和查看ajaxFileUpload.js源码发现:ajaxFileUpload.js本身根本就不支持附带参数. function ajaxFileUpload(DOMId,row){ var param={"exam.class_id&q