所有分类
  • 所有分类
  • 后端开发
用jQuery优化上传对象样式,让上传文件变得简单又时尚

用jQuery优化上传对象样式,让上传文件变得简单又时尚

实现修改上传对象的功能,以实现更好的用户体验。修改上传按钮样式选择器,我们可以轻松地获取上传表单中的元素,并修改它们的样式。默认情况下,文件选择框是由浏览器来渲染的,样式和行为是无法修改的。伪类选择器来修改文件选择框的样式。对象来上传文件,

优化上传对象样式

大家在做网站时常常需要上传文件对不?可能觉得官网自带的上传表单有点儿鸡肋?别担心,让我来教你怎么用jQuery解决这个问题!首先,使用jQuery找到表单中的input[type=”file”]元素,对它稍微改造下。比如,把默认的上传按钮换成你喜欢的样式。接着,当你点击这个新按钮时,实际上是在模拟原按钮的点击行为,这样文件选择框就能自动弹出!

跟你说你完全可以隐形input[type=”file”](也就是把display设置成none),把原本那个文件上传来个隐藏。然后,搞个label标签,添加个”FOR”(for属性),想着给label设置input[type=”file”]的id。这么一来,不管是点击label还是input,都等同于在操作同一个对象!至于上传按钮要咋画,随你便!再者,你还能给这个自定义的上传按钮添点儿漂亮又实用的样式!

  
  
  

修改文件选择框样式

input[type="file"] {
  display: none;
}
#customUpload {
  border: 1px solid #ccc;
  padding: 10px;
  cursor: pointer;
}

朋友们是不是经常被那些固定的浏览页面弹窗和烦人的文件选择框困扰?别担心,其实现在有些浏览器已经悄悄加入了新技能。比如说WebKit引擎的浏览器,你只需用上一句很酷的代码::-webkit-file-upload-button,就可以轻松自定义所有文件选择框的文啊、色彩啊、边框之类的东西

想让文件选框看起来更好看点嘛?试试在input[type=”file”]加些装饰元素,比如说换背景色或者改变字样。虽然可能有些兼容问题,不过把握好度的话,效果还不错!

添加上传进度条和提示信息

用jQuery优化上传对象样式,让上传文件变得简单又时尚

首先,把要传送的文件和其他信息装到一个叫FormData的东西里。接下来,用ajax()函数给服务器发个POST类型的AJAX请求。别忘了在url这里填上目的地,data那里带上刚才那个FormData。最后,记得将processData和contentType设为false,这样才能处理二进制数据

input[type="file"]::-webkit-file-upload-button {
  background-color: #42a5f5;
  color: #fff;
  padding: 10px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

传文件时别忘了看着点进度!你可以试试更改一下进度条的宽窄来让人知道你们在哪儿。然后留意一下上传有没有变好,通过xhr.onreadystatechange就能看到是否成功喽。最后记得告诉大伙儿上传成没成功这样大家就了解文件的全过程了

保证安全性与稳定性

虽然加点jQuery能让网站更有乐趣,但别忘了安全才是最重要的优化上传功能可得步步为营噢。

首先得看看用户说的是不是真的咯;接着,得暗中盯着点儿,提防那些不怀好意的家伙;还有,服务器里面的东西也得留心看管,比如管好文件类型、大小和位置啥的,别出岔子。

咱们就用jQuery,这玩意儿快、能干又好用,网页游戏啥的都不在话下。不过,安全性可不能忽视哟~

$(document).on('change', '#fileToUpload', function() {
  var file = $(this)[0].files[0];
  var formData = new FormData();
  formData.append('file', file);
  $.ajax({
    type: 'POST',
    url: 'upload.php',
    data: formData,
    processData: false,
    contentType: false,
    xhr: function() {
      var xhr = new XMLHttpRequest();
      xhr.upload.onprogress = function(e) {
        if (e.lengthComputable) {
          var percent = Math.round((e.loaded / e.total) * 100);
          $('#progress').css('width', percent + '%');
          $('#percent').text(percent + '%');
        }
      };
      return xhr;
    },
    success: function(data) {
      $('#result').text('上传成功');
      // 处理上传结果
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
      $('#result').text('上传失败');
      // 处理上传错误
    }
  })
});

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/04/15717.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?