js上传文件;input上传文件;

html原生上传文件方式1:
在这里插入图片描述

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Document</title>
    <script></script>
  </head>

  <body>
    <div>
      选择文件(可多选):
      <input type="file" id="f1" multiple /><br /><br />
      <button type="button" id="btn-submit">上 传</button>
    </div>
    <script>
      function submitUpload() {
        //获得文件列表,注意这里不是数组,而是对象
        var fileList = document.getElementById("f1").files;
        console.log(document.getElementById("f1"), fileList);
        if (!fileList.length) {
          alert("请选择文件");
          return;
        }
        var file = new FormData(); //构造FormData对象
        // file.append('title', document.getElementById('title').value);

        //多文件上传需要遍历添加到 fromdata 对象
        for (var i = 0; i < fileList.length; i++) {
          file.append("file", fileList[i]); //支持多文件上传
        }

        for (var value of file.values()) {
          console.log(value);
        }
        console.log(file);

        var xhr = new XMLHttpRequest(); //创建对象

        xhr.open("POST", "https://dcdn-jiazheng.21cs.cn/file/upload");
        // xhr.setRequestHeader("Content-Type", "multipart/form-data");
        // xhr.setRequestHeader("Authorization", token);

        xhr.send(file); //发送时  Content-Type默认就是: multipart/form-data;

        xhr.onreadystatechange = function () {
          console.log("state change", xhr.readyState);
          if (this.readyState == 4 && this.status == 200) {
            var obj = JSON.parse(xhr.responseText); //返回值
            console.log(obj);
            if (obj.data) {
              alert("上传成功");
            }
          }
        };
      }

      //绑定提交事件
      document
        .getElementById("btn-submit")
        .addEventListener("click", submitUpload);
    </script>
  </body>
</html>

html原生上传文件方式2:

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
    />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
      #progress {
        height: 10px;
        width: 500px;
        border: 1px solid gold;
        position: relative;
        border-radius: 5px;
      }
      #progress .progress-item {
        height: 100%;
        position: absolute;
        left: 0;
        top: 0;
        background: chartreuse;
        border-radius: 5px;
        transition: width 0.3s linear;
      }
    </style>
  </head>
  <body>
    文件上传框<br />
    <input type="file" id="file" /><br />
    显示进度条<br />
    <div id="progress">
      <div class="progress-item"></div>
    </div>
    上传成功后的返回内容<br />
    <span id="callback"></span>
  </body>
  <script>
    //首先监听input框的变动,选中一个新的文件会触发change事件
    document.querySelector("#file").addEventListener("change", function () {
      //获取到选中的文件
      var file = document.querySelector("#file").files[0];
      //创建formdata对象
      var formdata = new FormData();
      formdata.append("file", file);
      //创建xhr,使用ajax进行文件上传
      var xhr = new XMLHttpRequest();
      xhr.open("post", "https://dcdn-jiazheng.21cs.cn/file/upload");
      //回调
      xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
          document.querySelector("#callback").innerText = xhr.responseText;
        }
      };
      //获取上传的进度
      xhr.upload.onprogress = function (event) {
        if (event.lengthComputable) {
          var percent = (event.loaded / event.total) * 100;
          document.querySelector("#progress .progress-item").style.width =
            percent + "%";
        }
      };
      //将formdata上传
      xhr.send(formdata);
    });
  </script>
</html>

其他好的上传组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值