通过HTTP链接获取图片文件,并将其转换为File格式

场景介绍:

  • 添加时上传图片,获取图片File文件上传至接口。
  • 编辑时,直接将img标签中src设置成http url回显图片。
  • 编辑时,不修改图片,保存时,接口仍需要图片的File文件格式。此时如果获取图片的File文件格式是个问题。

以下步骤,针对如何将http url转化为File格式做一个说明。
(1)思路:

  • 发起HTTP请求以获取图片数据
  • 将获取的数据转换为Blob数据
  • 使用Blob对象创建File对象

(2)解决方法:

  • 需要后端配合提供接口,返回logo图片
    在这里插入图片描述

  • 前端将返回值做处理

let init: any = {
      method: "get",
      mode: "cors",
      cache: "no-cache",
      headers: {
          "Content-Type": "application/octet-stream",
      },
  };
  fetch(`/api/xxx/xxxx/${columnVal.id}/`, init)
      .then((response) => {
          return response.blob();
      })
      .then((blob) => {
          // logoname为当前图片的名称,自行设置
          let file = new File([blob], logoname, { type: blob.type });
          // 更新 file参数,commonUpdate为自定义方法
          commonUpdate({ logoContent: file });
      })
      .catch((e:any) => {
          // 填入异常处理方法
      });
  • 注意事项:
    (1)切记不要直接将http image url做File文件转换,那是将url转为File格式,并不是真正的拿到了image的信息。可以通过上传时图片的size和转换后的size做对比,可看到明显区别
    (2)如果不想采用这种方法,可以和后端沟通,接口传参使用base64的格式,img src也接收base64直接展示,直接避免了上述问题的出现。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值