如何通过按钮选择本地图片展示预览

15 篇文章 0 订阅

提示:防止以后忘了不好找就记录下来


前言

提示:这里会涉及到一点图片上传的知识

img标签的src值为以下几种:
1. 只能是图片的”链接地址(外链http://开头、图片文件相对路径)
2. 或者是图片的base64字符串(而且字符串还必须是data:image/png;base64,图片转base64字符串)


一、第一种方法

提示:文件 -> 内存临时地址(这个地址只能在js里内存里不能发给后台)
在这里插入图片描述
代码如下:

<template>
  <el-card class="box-card">
    <div slot="header" class="clearfix">
      <span>更换头像</span>
    </div>
    <div>
      <!-- 图片,用来展示用户选择的头像 -->
      <img v-if="!avatar" alt="" class="the_img" src="../../assets/images/avatar.jpg"/>
      <img v-else :src="avatar" class="the_img" alt=""/>

      <!-- 按钮区域 -->
      <div class="btn-box">
        <input ref="iptRef" accept="image/*" style="display: none" type="file" @change="onFileChange"/>
        <el-button icon="el-icon-plus" type="primary" @click="chooseImg">选择图片</el-button>
        <el-button :disabled="avatar === ''" icon="el-icon-upload" type="success">上传头像</el-button>
      </div>
    </div>
  </el-card>
</template>

<script>
export default {
  name: 'UserAvatar',
  data () {
    return {
      avatar: '' // 保存图片链接/base64字符串
    }
  },
  methods: {
    // 选择图片->点击事件->让选择框出现
    chooseImg () {
      this.$refs.iptRef.click()
    },
    onFileChange (e) {
      // 获取用户选择的文件列表(伪数组)
      const files = e.target.files
      if (files.length === 0) {
        this.avatar = ''
      } else {
        // (默认只能选1个,如果选择多个你需要给input标签加额外原生属性)
        // 语法:URL.createobjectURL(文件)
        // 返回值:内存临时地址
        this.avatar = URL.createObjectURL(files[0])
        }
      }
    }
  }
}
</script>

<style lang="less" scoped>
.btn-box {
  margin-top: 10px;
}

.preview {
  object-fit: cover;
}

.the_img {
  width: 350px;
  height: 350px;
}
</style>

二、第二种方法

提示:文件 -> base64字符串(此字符串是可以发给后台的);上传的就是base64字符串
代码如下:

<template>
  <el-card class="box-card">
    <div slot="header" class="clearfix">
      <span>更换头像</span>
    </div>
    <div>
      <!-- 图片,用来展示用户选择的头像 -->
      <img v-if="!avatar" alt="" class="the_img" src="../../assets/images/avatar.jpg"/>
      <img v-else :src="avatar" class="the_img" alt=""/>

      <!-- 按钮区域 -->
      <div class="btn-box">
        <input ref="iptRef" accept="image/*" style="display: none" type="file" @change="onFileChange"/>
        <el-button icon="el-icon-plus" type="primary" @click="chooseImg">选择图片</el-button>
        <el-button :disabled="avatar === ''" icon="el-icon-upload" type="success">上传头像</el-button>
      </div>
    </div>
  </el-card>
</template>

<script>
export default {
  name: 'UserAvatar',
  data () {
    return {
      avatar: '' // 保存图片链接/base64字符串
    }
  },
  methods: {
    // 选择图片->点击事件->让选择框出现
    chooseImg () {
      this.$refs.iptRef.click()
    },
    onFileChange (e) {
	  // 获取用户选择的文件列表(伪数组)
      const files = e.target.files
      if (files.length === 0) {
        this.avatar = ''
      } else {
        const fr = new FileReader()
        fr.readAsDataURL(files[0]) // 传入文件对象开始读
        // onload 等待把文件读成 base64 字符串后会触发 onload 事件函数
        fr.onload = (e) => {
          // e.target.result的值就是读完的结果
          this.avatar = e.target.result // 赋予给变量,让他显示在img的src里
        }
        }
      }
    }
  }
}
</script>

<style lang="less" scoped>
.btn-box {
  margin-top: 10px;
}

.preview {
  object-fit: cover;
}

.the_img {
  width: 350px;
  height: 350px;
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: docxpreview是一种可以在前端实现的文档预览工具,可以方便地预览和浏览.docx格式的文档。实现docxpreview的前端主要包括以下几个步骤。 首先,前端需要通过接口或后端提供的服务获取.docx文件的二进制数据或URL。可以使用AJAX技术进行异步请求,并将获取到的文件数据存储在前端。 接下来,前端需要将获取到的.docx文件进行解析,提取其中的文本和格式信息,并根据需要进行样式的调整和布局的优化。可以使用第三方的JavaScript库,如JSZip和officegen来帮助解析.docx文件。 然后,前端需要将解析后的文本和格式信息渲染到HTML页面上,以便用户可以直接在前端页面上进行预览。可以使用HTML和CSS来创建页面结构和样式,并将解析后的文本插入到相应的元素中。 在渲染过程中,前端还可以添加一些交互功能,例如放大缩小、翻页和搜索等,以提升用户体验。可以使用JavaScript来实现这些功能,并与HTML和CSS进行交互。 最后,前端需要进行一些错误处理和异常处理,确保在预览过程中出现错误时能够及时提示用户或提供相关的错误信息。 综上所述,docxpreview文档预览前端实现主要包括获取.docx文件数据,解析文本和格式信息,渲染到HTML页面,并添加交互功能和错误处理等步骤。通过这些步骤可以实现一个简单但功能完善的.docx文档预览前端。 ### 回答2: docxpreview文档预览是一种前端实现的技术,它通过使用一些特定的技术和工具,在网页上实现对docx文档的预览功能。 首先,实现docx文档预览的前提是需要将docx文档转换成可被网页展示的格式。这可以通过一些在线的或者本地的转换工具来实现,比如使用Microsoft Office自带的Office Online服务,或者使用一些第三方的开源库,如Apache POI等。这些工具可以将docx文档转换为HTML、PDF或者其他网页可以读取和展示的格式。 然后,在前端页面上实现docx文档的预览功能需要引入一些前端技术和工具。常见的有使用HTML、CSS和JavaScript来实现网页的布局和交互效果。我们可以在网页上嵌入一个可以显示HTML或者PDF内容的iframe,通过将转换后的文档内容加入到该iframe中,就可以在网页上实现对docx文档的预览功能。 另外,为了提升用户体验和功能完善,我们可以引入一些额外的功能。比如,可以添加页面导航按钮,让用户可以在预览文档时进行翻页操作;也可以添加搜索功能,让用户可以根据关键词在文档中进行搜索;还可以添加缩放功能,让用户可以根据自己的需求对文档进行放大或缩小等等。 综上所述,docxpreview文档预览前端实现需要将docx文档转换为可被网页展示的格式,然后在前端页面上通过HTML、CSS和JavaScript等技术进行实现。同时,为了提升用户体验和功能完善,可以添加一些额外的功能。 ### 回答3: docxpreview文档预览前端实现是指通过前端技术实现对docx格式文档进行预览的功能。实现该功能需要以下步骤: 1. 获取docx文件:用户在前端页面上选择docx文件,通过文件上传功能将文件传输到后台服务器。 2. 后台处理:后台服务器接收到传输的docx文件后,需要对文件进行解析和处理。可以使用开源的文档处理库,如Apache POI或Aspose Words等,对docx文件进行解析,提取其中的内容和格式信息。 3. 前端渲染:后台处理完成后,将提取的内容和格式信息传输到前端前端可以使用HTML和CSS技术对提取的内容进行渲染和展示。可以将文本内容显示为段落、标题、表格等形式,并自定义样式,如字体、大小、颜色等。 4. 图片预览:如果docx文件中包含图片前端需要将这些图片进行处理并显示。可以通过解析docx文件中的图片路径,并将图片转换成base64编码格式,以便在前端页面上显示。 5. 页面交互:为了提升用户体验,可以在前端页面上添加一些交互功能。比如,支持缩放、滚动、跳转页等操作,让用户能够更方便地浏览和阅读文档。 总之,实现docxpreview文档预览前端功能,需要通过后台解析和处理docx文件,并将提取的内容和格式信息传输到前端进行渲染和展示。同时,还需要处理文档中的图片,并提供一些交互功能,以提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿超学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值