当前位置: 首页 > 知识库问答 >
问题:

javascript - VUE2头像上传后无法预览的解决方法?

乐正意智
2024-03-24

VUE2的:src和v-if为什么不能绑定上这个后端返回值

返回的路径打开可以看到图片,HTML中直接加入src=也能看到图片,但是不能响应地预览图片。
希望大佬帮忙看看为什么头像上传以后不能预览

共有1个答案

许学真
2024-03-24

请按照 el-uploadflie-list 参数方式来实现预览的效果。�� Upload 上传 - 组件 | Element
而不是直接在 el-upload 中使用 img 标签来展示。

提供一个已经封装好的图片上传组件来参考实现方式:

<template>  <div class="component-upload-image">    <el-upload      multiple      :action="uploadImgUrl"      list-type="picture-card"      :on-success="handleUploadSuccess"      :before-upload="handleBeforeUpload"      :limit="limit"      :on-error="handleUploadError"      :on-exceed="handleExceed"      ref="imageUpload"      :on-remove="handleDelete"      :show-file-list="true"      :headers="headers"      :file-list="fileList"      :on-preview="handlePictureCardPreview"      :class="{hide: this.fileList.length >= this.limit}"    >      <i class="el-icon-plus"></i>    </el-upload>    <!-- 上传提示 -->    <div class="el-upload__tip" slot="tip" v-if="showTip">      请上传      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>      的文件    </div>    <el-dialog      :visible.sync="dialogVisible"      title="预览"      width="800"      append-to-body    >      <img        :src="dialogImageUrl"        style="display: block; max-width: 100%; margin: 0 auto"      />    </el-dialog>  </div></template><script>import { getToken } from "@/utils/auth";export default {  props: {    value: [String, Object, Array],    // 图片数量限制    limit: {      type: Number,      default: 5,    },    // 大小限制(MB)    fileSize: {       type: Number,      default: 5,    },    // 文件类型, 例如['png', 'jpg', 'jpeg']    fileType: {      type: Array,      default: () => ["png", "jpg", "jpeg"],    },    // 是否显示提示    isShowTip: {      type: Boolean,      default: true    }  },  data() {    return {      number: 0,      uploadList: [],      dialogImageUrl: "",      dialogVisible: false,      hideUpload: false,      baseUrl: process.env.VUE_APP_BASE_API,      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址      headers: {        Authorization: "Bearer " + getToken(),      },      fileList: []    };  },  watch: {    value: {      handler(val) {        if (val) {          // 首先将值转为数组          const list = Array.isArray(val) ? val : this.value.split(',');          // 然后将数组转为对象数组          this.fileList = list.map(item => {            if (typeof item === "string") {              if (item.indexOf(this.baseUrl) === -1) {                  item = { name: this.baseUrl + item, url: this.baseUrl + item };              } else {                  item = { name: item, url: item };              }            }            return item;          });        } else {          this.fileList = [];          return [];        }      },      deep: true,      immediate: true    }  },  computed: {    // 是否显示提示    showTip() {      return this.isShowTip && (this.fileType || this.fileSize);    },  },  methods: {    // 上传前loading加载    handleBeforeUpload(file) {      let isImg = false;      if (this.fileType.length) {        let fileExtension = "";        if (file.name.lastIndexOf(".") > -1) {          fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);        }        isImg = this.fileType.some(type => {          if (file.type.indexOf(type) > -1) return true;          if (fileExtension && fileExtension.indexOf(type) > -1) return true;          return false;        });      } else {        isImg = file.type.indexOf("image") > -1;      }      if (!isImg) {        this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);        return false;      }      if (this.fileSize) {        const isLt = file.size / 1024 / 1024 < this.fileSize;        if (!isLt) {          this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);          return false;        }      }      this.$modal.loading("正在上传图片,请稍候...");      this.number++;    },    // 文件个数超出    handleExceed() {      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);    },    // 上传成功回调    handleUploadSuccess(res, file) {      if (res.code === 200) {        this.uploadList.push({ name: res.fileName, url: res.fileName });        this.uploadedSuccessfully();      } else {        this.number--;        this.$modal.closeLoading();        this.$modal.msgError(res.msg);        this.$refs.imageUpload.handleRemove(file);        this.uploadedSuccessfully();      }    },    // 删除图片    handleDelete(file) {      const findex = this.fileList.map(f => f.name).indexOf(file.name);      if (findex > -1) {        this.fileList.splice(findex, 1);        this.$emit("input", this.listToString(this.fileList));      }    },    // 上传失败    handleUploadError() {      this.$modal.msgError("上传图片失败,请重试");      this.$modal.closeLoading();    },    // 上传结束处理    uploadedSuccessfully() {      if (this.number > 0 && this.uploadList.length === this.number) {        this.fileList = this.fileList.concat(this.uploadList);        this.uploadList = [];        this.number = 0;        this.$emit("input", this.listToString(this.fileList));        this.$modal.closeLoading();      }    },    // 预览    handlePictureCardPreview(file) {      this.dialogImageUrl = file.url;      this.dialogVisible = true;    },    // 对象转成指定字符串分隔    listToString(list, separator) {      let strs = "";      separator = separator || ",";      for (let i in list) {        if (list[i].url) {          strs += list[i].url.replace(this.baseUrl, "") + separator;        }      }      return strs != '' ? strs.substr(0, strs.length - 1) : '';    }  }};</script><style scoped lang="scss">// .el-upload--picture-card 控制加号部分::v-deep.hide .el-upload--picture-card {    display: none;}// 去掉动画效果::v-deep .el-list-enter-active,::v-deep .el-list-leave-active {    transition: all 0s;}::v-deep .el-list-enter, .el-list-leave-active {  opacity: 0;  transform: translateY(0);}</style>
 类似资料:
  • 安装及部署: 1. 上传到 apache,iis,tomcat 服务器,通过域名访问 index.html 例如:http://www.hdfu.net/index.html v1.8  1.优化摄像头拍照不清晰(目前支持高清) v1.7  1.优化三张预览图片失真  2.优化加载默认图片,图片上传体验 v1.6   1.修改默认图片小于300px,图片拉伸bug v1.5    1.修复图片像素

  • 本文向大家介绍php实现头像上传预览功能,包括了php实现头像上传预览功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php实现头像上传预览功能的具体代码,供大家参考,具体内容如下 主页面1.php 处理页面2.php 打开显示: 点击图片位置弹出选择框: 选择图片完成后: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 在UserProfileModule中新增一个方法,带适配器的哦 @AdaptBy(type=UploadAdaptor.class, args={"${app.root}/WEB-INF/tmp/user_avatar", "8192", "utf-8", "20000", "102400"}) @POST @Ok(">>:/user/profile") @At(

  • 问题内容: 我想先预览图像,然后再将其上传到服务器。我已经为其编写了一些代码,但是由于某种安全原因,它只能在Internet Explorer中预览,而不能在其他浏览器(如Safari,Chrome,Firefox)中预览。有什么解决方案可以在这些浏览器中预览图像吗? 问题答案: 对于Firefox。由于安全原因,它的路径被截断了。但是,他们提供了其他方法: 以下内容适用于Internet Exp

  • vue2调试h5预览pdf的问题? pdf地址 http://www.xxxx.org.cn/TrendFile/YB_SD_HJ_1mon_20231125_SDMF.pdf 在谷歌浏览器里面可以直接预览,但是放到本地vue的代码里面会报错跨域,iframe也会报错跨域,有什么方法可以正常预览 把静态pdf文件放到static 或者asset文件夹下 通过路径预览,会出现 404的问题 求教该如

  • ,而当我上传相同的文件从上传文件选项从firebase UI然后它是预览罚款。Pls帮助我解决这个问题。