基于ajax html实现文件上传技巧总结

这篇文章主要为大家详细总结了基于ajax html实现文件上传技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

引语:大家都知道,html中上传文件就一个input,type=file就搞定了。但是,这个标签的样式,实在不值得提点什么,要改动他的样式,恐怕也是较难的。但是其实挺简单,今天就来说说上传文件小技巧吧!

1. 怎样自定义样式?
1)、只管按照自己喜欢看到的样式去定义即可,如,可以是背景图片效果,可以是文字指示,总之想怎么改怎么改!有了按钮,还需要一个文件名容器,用来存放选择上传文件时的名字,从而不让上传看起来枯涩难懂。

2)、添加真正需要上传的文件控件,并设置属性display:none;如 , 这样就有了真正的上传文件的地方了。所以,可以说,上传文件的界面有多漂亮取决你的想象力!

2. 怎样触发事件?

立即学习“前端免费学习笔记(深入)”;

这是个重点,触发的点应该是自己写的样式处,而真正起作用的元素却是隐藏的,但是并不影响它的点击效果,只需要给它触发一个点击事件即可,如$(‘#target-file’).trigger(‘click’);

3. 多选文件?

多文件上传,只需使用html的一个file的multiple=true即可,当然你也可以选择第三方的上传控件,如swfupload,效果是真心不错的,但是对于不想用的插件的人,就不起作用了。                                                                         

4.  相关插件? 

界面美化其实可以使用jqueryui等插件;
要做一些友好的交互的话,都会用到ajax技术,无刷新切换、异步上传、提交,最后,其实ajax的路径也是可以保留的,使用pushState, replaceState 实现 pjax .
表单验证:validform.js
异步提交文件: jquery.form.js
友好的弹窗提示:layer.js

5. 一点兼容性的问题?

做界面方面的工作,最怕的也是很重要的工作,就是各个浏览器之间的兼容性问题,下面主要列几点供参考:

table宽度的处理方式不一致;
select, input显示高度不一致;

alert弹窗不一致;

6. 演示代码

本地上传打包工具 $(function(){  var alertTitle = '系统提示:';  var submitId = '#do-submit';  $('#taskForm').Validform({   btnSubmit: submitId,   tiptype: 1,   ignoreHidden: true,   dragonfly: false,   tipSweep: true,   label: ".label",   showAllError: false,   postonce: true,   ajaxPost: true,   datatype:{   },   beforeCheck:function(curform){   },   beforeSubmit:function(curform){    $('.upload-file-real').attr('disabled', 'disabled');    $(submitId).attr('disabled', 'disabled'); //提交前禁用按钮    ajaxSubmitForm(curform);    $(submitId).removeAttr('disabled');   //失败后恢复可提交    return false;   },   submitForm: function(){}      //不再起作用  });  //切换上传方法  $('.switch-upload-method').off().on('click', function(){//   $(submitId).attr('disabled', 'disabled');   var pObj = $(this).parent().find('.switch-upload-method');   var index = pObj.index(this);   var uploadTypeId = $('#upload-type-id').val();      //上传方式:1:打包工具;2:本地上传,0:没有上传方式   var uploadType = $(this).attr('up-type-id');   if(parseInt($('#sub-channel-count').html()) > 0){    if(uploadTypeId != uploadType){     layer.alert('还有子渠道包数据,不能完成切换,请先确认清除再切换!');     return false;    }   }   pObj.not(':eq(' + index + ')').removeClass('btn-danger').addClass('btn-default');   pObj.eq(index).removeClass('btn-default').addClass('btn-danger');   if(uploadType == 36){    //local-upload    $('#upload-type-id').val(uploadType);    $('#init-apk-container').show();    $('#apk-tool-container').hide();    $('#upload-main-control').find('.del-it-main').css({display: 'inline-block'});    $('#local-upload-real-file').trigger('click');   }else if(uploadType == 35){   //apk-tool    $('#upload-type-id').val(uploadType);    $('#init-apk-container').hide();    $('#local-upload-container').hide();    $('#upload-main-control').find('.del-it-main').hide();    $('#apk-tool-container').show();   }  });  //本地上传  $('#local-upload-real-file').off().on('change', function(){   if(!$(this).val()){    return false;   }   file_size = 0;   filepath = $(this).val();   maxFileSize = 30 * 1024 * 1024;   var browserCfg = {};   var ua = window.navigator.userAgent;   if (ua.indexOf("MSIE") >=1 ){    browserCfg.ie = true;   }else if(ua.indexOf("Firefox") >=1 ){    browserCfg.firefox = true;   }else if(ua.indexOf("Chrome") >=1 ){    browserCfg.chrome = true;   }   if (browserCfg.ie) {    var img = new Image();    img.src = filepath;    file_size = img.fileSize;    while (true) {     if (img.fileSize > 0) {      if (img.fileSize > maxFileSize) {       alert("上传包超过30MB限制,请使用打包工具上传!");       return false;      }      break;     }    }   } else {    file_size = this.files[0].size;    if (file_size > maxFileSize) {     alert("上传包超过30MB限制,请使用打包工具上传!");     return false;    }   }   var responseObjId = $(this).attr('response-id');   var responseObj = $('#' + responseObjId);   $('#taskForm').ajaxSubmit({    url:'/aa/bb/uploadTmpApk',    resetForm: false,    dataType: 'json',    beforeSubmit: function(option){     window.loading = layer.load(2);    },    success: function(data, statusText){     layer.close(window.loading);     if(data.status == 1){      $('#version-identifier').val(data.version);      responseObj.html(data.apkInfoHtml);      responseObj.show();      var delObj = $('#upload-main-control').find('.del-it-main');      delObj.css({'display': 'inline-block'});      $('#sub-channel-count').html(data.apkTotal);      $('#init-apk-container').hide();      $(submitId).removeAttr('disabled');     }else{      layer.alert(data.info, {title: alertTitle});     }    },    error: function(data){     layer.close(window.loading);     layer.alert('未知错误,请稍后再试!');    }   });   return false;//防止dialog 自动关闭  });  //打包工具  $('#apk-tool-real-file').off().on('change', function(){   if(!$(this).val()){    return false;   }   var responseObjId = $(this).attr('response-id');   var responseObj = $('#' + responseObjId);   $('#Form').ajaxSubmit({    url:'/aa/bb/uploadTmpApkTool',    resetForm: false,    dataType: 'json',    beforeSubmit: function(option){     window.loading = layer.load(2);    },    success: function(data, statusText){     layer.close(window.loading);     if(data.status == 1){      $('#version-identifier').val(data.version);      responseObj.html(data.infoHtml);      var parentContainer = responseObj.parent().parent(),       nameContainer = parentContainer.find('.apk-name-container'),        delObj = parentContainer.find('.del-it-apk-tool');      nameContainer.html(data.apkName);      nameContainer.attr('title', data.apkName);      $('#apk-tool-file-tmp').html(data.fileInfo);      $(submitId).removeAttr('disabled');     }else{      layer.alert(data.info, {title: alertTitle});     }    },    error: function(data){     layer.close(window.loading);     layer.alert('未知错误,请稍后再试!');    }   });   return false;//防止dialog 自动关闭  });  $('.apk-tool-upload-button').on('click', function(){   $('#apk-tool-real-file').trigger('click');  }); });

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在dom4j中使用XPath的简单实例

浅谈Bootstrap的DatePicker日期范围选择

用AJAX实现页面登陆以及注册用户名验证的简单实例

以上就是基于ajax html实现文件上传技巧总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2758865.html

(0)
上一篇 2025年3月8日 08:19:08
下一篇 2025年3月8日 08:19:16

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Ajax 上传图片并预览的简单实现

    下面我就为大家带来一篇ajax 上传图片并预览的简单实现。现在就分享给大家,也给大家做个参考。 1. 直接上最简单的 一种 ajax 异步上传图片,并预览 html: nbsp;html>图片上传 | cookie  file:   …

    编程技术 2025年3月8日
    200
  • 基于Ajax表单提交及后台处理简单的应用

    下面我就为大家带来一篇基于ajax表单提交及后台处理简单的应用。现在就分享给大家,也给大家做个参考。 首先先说下表单提交吧,要提交表单那么就得先收集表单数据(至于验证这个我就不说了,要说留下下次吧),有了jquery取个html的值还是简单…

    编程技术 2025年3月8日
    200
  • Ajax实现省市区三级级联

    这篇文章主要为大家详细介绍了ajax实现省市区三级级联,数据来自mysql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 address.html nbsp;html>Insert title here  /** * 得到X…

    编程技术 2025年3月8日
    200
  • 如何动态引入JS文件

    这次给大家带来如何动态引入JS文件,动态引入JS文件的注意事项有哪些,下面就是实战案例,一起来看一下。 index.html 登录后复制 test.js alert(“hello! I am test.js”); var str=”1″; …

    编程技术 2025年3月8日
    200
  • Ajax表单异步上传文件实例代码

    这篇文章主要介绍了ajax表单异步上传文件实例代码(包括文件域),非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧 1.起因 做前台页面时,需要调用WebAPI的Post请求,发送一些字段和文件(相当于把表单通过ajax异步发送出去,得到…

    编程技术 2025年3月8日
    200
  • IE下Ajax提交乱码的快速解决方法

    下面我就为大家带来一篇ie下ajax提交乱码的快速解决方法。现在就分享给大家,也给大家做个参考。 哈哈,试了这么多还是encodeURIComponent管用啊!!!! 在汉字的位置加个保护措施:encodeURIComponent(par…

    编程技术 2025年3月8日
    200
  • ajax设置async校验用户名是否存在的实现方法

    下面我就为大家带来一篇ajax设置async校验用户名是否存在的实现方法。现在就分享给大家,也给大家做个参考。 新增一个用户的时候,需要判断这个手机号码是否存在,最开始的想法很简单在textbox上设置一个onmouseout事件,在IE下…

    2025年3月8日
    200
  • Ajax获取数据然后显示在页面的实现方法

    下面我就为大家带来一篇ajax获取数据然后显示在页面的实现方法。现在就分享给大家,也给大家做个参考。 主要功能流程介绍 循环获取列表数据 点击列表数据进入详情页 点击报名参加弹出报名成功提示框 点击提示框中的确定按钮,跳回列表页 代码实现流…

    2025年3月8日
    200
  • ajax同步验证单号是否存在的方法

    这篇文章主要介绍了ajax同步验证单号是否存在的方法,涉及基于ajax的数据交互相关操作技巧,需要的朋友可以参考下 本文实例讲述了ajax同步验证单号是否存在的方法。分享给大家供大家参考,具体如下: //保存前执行的方法,ajax同步调用后…

    编程技术 2025年3月8日
    200
  • Ajax 异步加载解析

    这篇文章主要为大家详细介绍了ajax 异步加载,什么是ajax 异步加载,如何实现ajax 异步加载,感兴趣的小伙伴们可以参考一下 AJAX (Asynchronous JavaScript and XML,异步的 JavaScript 和…

    2025年3月8日
    200

发表回复

登录后才能评论