zoukankan      html  css  js  c++  java
  • Ajax文件上传,vue axios文件上传

    Ajax做文件上传就会有兼容性的问题。只有一些高版本的浏览器可以实现文件上传的功能。Ie6 ie7 低版本浏览器不能实现。因为ajax文件上传用到Formdata,它是h5新增的,有兼容问题,低版本浏览器不支持。

    数据往formdata中加:

    调用formdata的append方法,用原生dom对象的file的第0个获取到上传的文件。发aiax请求,用post请求方式,添加属性。

    原生ajax上传代码:

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8">
      <title></title>
    </head>
    
    <body>
    
      <p>data</p><input id='data' type="file" name="data" />
      <p>type</p><input id='input1' type="text" value='image/jpg' name="type" />
      <input type="button" value="添加文件" id="btn" />
    
    </body>
    
    </html>
    <script>
    
      btn.onclick = function () {
        // 前后端交互
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "请求接口", true);// 把数据传过去,true:异步 false:同步
        var formData = new FormData();
        formData.append("type", input1.value);
        formData.append("data", data.files[0]);
        xhr.send(formData);
        xhr.onreadystatechange = function () {
          if (xhr.readyState == 4 && xhr.status == 200) {
            var flag = xhr.responseText;//把响应拿回来
            console.log(flag);
          }
        }
      }
    
    </script>

    Jquery ajax上传代码:

    注意:在ajax发送请求时要加上以下三个属性:不加会报错

    Cache:false

    processData:false

    contentType:false

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8">
      <title></title>
      <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    </head>
    
    <body>
    
      <p>data</p><input id='data' type="file" name="data" />
      <p>type</p><input id='input1' type="text" value='image/jpg' name="type" />
      <input type="button" value="添加文件" id="btn" onclick="test();" />
    
    </body>
    
    </html>
    <script>
    
      function test() {
        var formData = new FormData();
    
        formData.append("type", input1.value);
        formData.append("data", data.files[0]);
    
        $.ajax({
          url: "请求接口",
          method: "POST",
          cache: false, // 文件不设置缓存
          data: formData,
          processData: false, // 数据不被转换为字符串
          contentType: false, // 上传文件时使用,避免 JQuery 对其操作
          success: function (result) {
            console.log(result);
          }
        })
      }
    
    </script>

    Vue axios上传代码:

          let formData = new FormData();
          formData.append('type', input1.value);
          formData.append('data', data.files[0]);
    
          axios({
            method: 'post',
            url: "请求接口",
            data: formData,
            headers: {
              'Content-Type': 'multipart/form-data'
            }
          })
            .then(res => {
            })
            .catch(err => {
            });
    

      

  • 相关阅读:
    软件工程概论(课堂作业01)
    java小程序(课堂作业06)
    动手动脑(课堂作业06)
    动手动脑(课堂作业05)
    java小程序(课堂作业04)
    动手动脑(课堂作业04)
    java小程序(课堂作业03)
    动手动脑(课堂作业03)
    动手动脑(课堂作业02)
    Codeforces 178B1-B3 Greedy Merchants
  • 原文地址:https://www.cnblogs.com/cyfeng/p/12193316.html
Copyright © 2011-2022 走看看