在使用formData传输图片数据时,遇到的问题

文章描述了如何在JavaScript中使用formDataAPI,将HTMLDOM中的图片转换为Base64编码,然后作为Blob对象附加到FormData中,以便通过CORS跨域上传到服务器接口的过程。
摘要由CSDN通过智能技术生成

一开始以为传的是二进制  后来才发现 不行  传输接口报错  经实验 发现得需要转一下

以下是formData传输图片一个例子

let htmlDom = document.getElementById("result"); // 你要图片的元素,可以直接是img
      if (htmlDom) {
        const canvas = await html2canvas(htmlDom, {
          useCORS: true,
        });
        const imgUrl = canvas.toDataURL("image/jpeg", 1.0);

        const str = imgUrl.split(";base64,")[1];
        const formData = new FormData();
        formData.append("playerId", playerID);
        formData.append("title", "来测试下,好准啊!");

        // 将Base64字符串转换为Blob对象
        const byteCharacters = atob(str);
        const byteArrays = [];
        for (let i = 0; i < byteCharacters.length; i++) {
          byteArrays.push(byteCharacters.charCodeAt(i));
        }
        const blob = new Blob([new Uint8Array(byteArrays)], {
          type: "image/jpeg",
        });

        // 将Blob对象作为文件添加到FormData中
        formData.append("files", blob, "filename.jpg");
        formData.append("filesType", "1");

        // console.log(JSON.stringify(formData), "formData");
        axios
          .post(
            "你的接口",
            formData,
            {
              headers: {
                "Content-Type": "multipart/form-data",
                Authorization: auth,
                // logintoken: loginToken,
                loginToken: loginToken,
                // Logintoken: loginToken,
              },
            }
          )
          .then((res) => {
            console.log(JSON.stringify(res), "res");
          })
          .catch((err) => {
            console.log(JSON.stringify(err), "err");
          });
      } else {
        console.log("图片元素不存在!");
      }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值