input file 文件上传,js控制上传文件的大小和格式

文件上传一般是用jquery的uploadify,比较好用。后面会出文章介绍uploadify这个插件。

但是,有时候为了偷懒,直接就用input 的file进行文件和图片等的上传,input file 可以控制上传的格式,但是是html5,很多浏览器不支持,请看我的文章对input file上传类型的控制

下面我用javascript来控制文件上传的大小和类型。

贴出html代码:

<form  action="后端接口" enctype="multipart/form-data" method="post" id="attachment_uploads">
  <div class="attachs fl">
       <div class="t_fjfont">附件:</div>
       <div class="upload_btns"><input type="file" name="file"  id="file" onchange="fileChange(this);" /> </div>
  </div>
  <div class="attachs fl">
       <div class="t_fjfont" style="color:red;font-size:12px;font-weight:bold">文件上限2MB</d
  </div>
  <div class="attachs fl">
       <div class="upload_btns"><input type="file" name="files"  id="file_fujian" onchange="filefujianChange(this);" /> <input type="hidden" name="rev" class="hide_rev" /></div>
  </div>
  </form>

javascript代码:

var isIE = /msie/i.test(navigator.userAgent) && !window.opera;

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;
      }
      var size = fileSize / 1024;
      if(size>2000){
       alert("附件不能大于2M");
       target.value="";
       return
      }
      var name=target.value;
      var fileName = name.substring(name.lastIndexOf(".")+1).toLowerCase();
      if(fileName !="xls" && fileName !="xlsx"){
          alert("请选择execl格式文件上传!");
          target.value="";
          return
      }
    } 

   function filefujianChange(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;
        }
        var size = fileSize / 1024;
        if(size>2000){
         alert("附件不能大于2M");
         target.value="";
         return
        }
        var name=target.value;
        var fileName = name.substring(name.lastIndexOf(".")+1).toLowerCase();
        if(fileName !="jpg" && fileName !="jpeg" && fileName !="pdf" && fileName !="png" && fileName !="dwg" && fileName !="gif" ){
          alert("请选择图片格式文件上传(jpg,png,gif,dwg,pdf,gif等)!");
            target.value="";
            return
        }
      }

上面代码当时为了考虑兼容问题,没有写html5的文件上传控制,直接在js中控制了。本代码支持所有主流浏览器!兼容性还是可以的!欢迎交流!

原文链接

时间: 2024-08-07 17:49:09

input file 文件上传,js控制上传文件的大小和格式的相关文章

js 控制弹出窗口的大小

<SCRIPT LANGUAGE=javascript> window.open ('open.html', 'newwindow','height=200, width=400, top=50%,left=50%, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no,status=no') </SCRIPT> 参数解释: LANGUAGE=javascript // 代表脚本开始 window.open

一段JS控制TD中图片的大小的代码

<table><tr><td id="otd"><div></div><img/><img/><hr/><img/></td></tr></table> <script language="JavaScript" type="text/javascript"> function set() {

移动端头像上传AJax input file

jQuery中的Ajax不能支持 input file 需要用ajaxupload.js但是先需要引入jQuery文件 <script src="__PUBLIC__/js/ajaxfileupload.js"></script> HTML代码很简单: input id="upfiles" class="upfiles" type="file" name="log" onchange

phpstudy APACHE支持.htaccess以及 No input file specified解决方案

APACHE支持.htaccess以及 No input file specified解决方案 你的Apache安装文件夹conf里找到httpd.conf文件 索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉.搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All: [1] 没想到遇见了 No input file specif

Apache支持.htaccess以及 No input file specified解决方案

在你的Apache安装文件夹conf里找到httpd.conf文件 搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉.搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All: [1] 没想到遇见了 No input file specified   因为项目用了URL route ,估摸着可能是rewrite的问题. 记录一下解

APACHE No input file specified. 完美解决方案

[1] 没想到遇见了 No input file specified   因为项目用了URL route ,估摸着可能是rewrite的问题. 记录一下解决方案. 1.检查doc_root 是否设置此值 2.检查.hta文件 , 很多框架都是index.php当入口文件. 默认的 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 规则在apache fastcgi模式下会导致No input file specified. 修改成 RewriteRule ^(

Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:"No input file specified." 原因在于使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,Wordpress的伪静态也有一样的问题. Wordpress程序默认的.htaccess里面的规则: 1 HTML " data

tp5 No input file specified.

我的是windows10 系统,phpstudy 环境 ,配置的本地虚拟机,tp5.1 访问跟目录正常 访问次级页面报错 对于 tp5  No input file specified.  的问题,其实是 .htaccess 文件的配置问题 源文件是这样的 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On  RewriteCond %{REQUEST_FILENAME} !-d Rewri

js 实现 input file 文件上传

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="js/jquery/jquery-1