美文网首页
常见导出上传文件接口或方法

常见导出上传文件接口或方法

作者: 用技术改变世界 | 来源:发表于2021-10-16 11:12 被阅读0次

1.    后端返回文件流 ,前端下载

接口定义,响应类型必须为   responseType: 'blob',

    downLoad(obj) {

        return Promise.resolve(

            instance.get(obj.url, {

                responseType: 'blob',

                withCredentials: true

            })

        )

    },

    downLoadPost(obj) {

        return Promise.resolve(

            instance.post(obj.url,obj.data, {

                responseType: 'blob',

                withCredentials: true

            })

        )

    }

方法1 :URL.createObjectURL  创建文件流地址,写入浏览器地址下载

 let objectUrl = URL.createObjectURL(res);

        window.location.href = objectUrl;

方法2 : 创建a标签下载

   static downloadFile(file, name) {

        let link = document.createElement('a')

        let blob = new Blob([file], {type: 'application/vnd.ms-excel'})

        link.style.display = 'none'

        link.href = URL.createObjectURL(blob);

        link.download =  name  //下载的文件名

        document.body.appendChild(link)

        link.click()

        document.body.removeChild(link)

    }

图片地址下载:

   static downFile(imgsrc, name) { //下载图片地址和图片名

    let image = new Image();

    // 解决跨域 Canvas 污染问题

    image.setAttribute("crossOrigin", "anonymous");

    image.onload = function () {

      let canvas = top.document.createElement("canvas");

      canvas.width = image.width;

      canvas.height = image.height;

      let context = canvas.getContext("2d");

      context.drawImage(image, 0, 0, image.width, image.height)

      let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据

      let a = top.document.createElement("a"); // 生成一个a元素

      let event = new MouseEvent("click"); // 创建一个单击事件

      a.download = name || "photo"; // 设置图片名称

      a.href = url; // 将生成的URL设置为a.href属性

      a.target = '_blank';

      a.dispatchEvent(event); // 触发a的单击事件

    };

       image.src = imgsrc;

       image.src = imgsrc + '?v=' + Date.now();

    }

文件上传接口:利用表单上传

    filePost(obj) {

        return Promise.resolve(

            instance.post(obj.url, obj.data ? obj.data : {}, {

                headers: {

                    'content-type': 'multipart/form-data'

                },

                withCredentials: true

            })

        )

    },

相关文章

网友评论

      本文标题:常见导出上传文件接口或方法

      本文链接:https://www.haomeiwen.com/subject/wkfboltx.html