前端:上传图片upload组件(传formData格式,后端返回图片文件流)

使用组件:iview中的upload组件

html:

<Upload
                multiple
                type="drag"
                :action="''"
                :before-upload="uploadImg"
              >
                <div style="padding: 20px 0">
                  <Icon
                    type="ios-cloud-upload"
                    size="52"
                    style="color: #3399ff"
                  ></Icon>
                  <p>选择本地文件上传</p>
                </div>
              </Upload>

传递给后端的是formData格式的数据,后端返回的是图片的文件流(这其中调了两次接口,第一次接口返回的是图片的不完整路径,第二次调用查询接口返回图片的文件流)

js代码:

const uploadImg = (file) => {
  let fd = new FormData();
  fd.append("file", file);
  // 调用上传接口
  let path = proxy.GlobalUrl.ANALYSIS.UPLOADIMG;
  proxy.http.post(path, fd).then((res) => {
    if (res.data.code === 0) {
      queryImg(res.data.data);
    }
  });
};
// 查询工程图片
const queryImg = (url) => {
  let path = proxy.GlobalUrl.ANALYSIS.VIEWIMG;
  let params = {
    imageUrl: url,
  };
  proxy.http.get(path, params, "blob").then((res) => {
    if (res.status === 200) {
      let blob = res.data;
      let reader = new FileReader();
      reader.readAsDataURL(blob); // 转换为base64
      reader.onload = function () {
        formValidate.imgId = reader.result;
        state.imgURL = reader.result;
      };
    }
  });
};

第二个接口返回的文件流要转化为base64(可以直接放src属性里显示图片),转化时用到了FileReader,readAsDataURL()这个方法返回的是data:url形式的字符串。

base64格式的图片如下:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值