vue 中通过添加原生 input 实现文件上传

这篇博客详细介绍了如何在Vue项目中实现文件上传功能,通过隐藏的input标签结合事件监听,实现了文件选择和读取。在文件改变时,利用FileReader API将文件转换为base64并进行预览,同时更新表单内容。用户点击上传按钮时触发文件输入框的点击事件,确保用户体验流畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件上传是通过 input 框 且 type = 'file' 来实现的文件上传功能,在页面标签合适位置添加

<input 
    type="file" 
    name="avatar" 
    accept="image/gif,image/jpeg,image/jpg,image/png" 
    style="display:none" 
    @change="changeImage($event)" 
    ref="avatarInput" />
<!-- 在点击上传的时候,触发上面的隐藏的 input 框的 click 事件 -->
<el-input class="fileUpload" v-model="form.content" placeholder="请输入画像ファイル" autocomplete="off"></el-input>
<el-button @click="handleSubmit">上传</el-button>

在 methods 中添加函数监听文本域的变化,通过事件对象获取上传的文件信息

handleSubmit() {
  this.$refs.avatarInput.click()
}
// 当文件域的内容改变的时候获取里面的文件信息对象
changeImage(e) {
  // 画像对象
  let that = this
  // 文件对象
  const file = e.target.files[0]
  var reader = new FileReader();
  reader.onload = function(e){
  	// 文件的 base64
    that.dataURL = e.target.result
    that.dataURL = that.dataURL.replace(/^data:\w+\/\w+;base64,/, '')
    // base64 to base64url
    that.dataURL = Base64.fromUint8Array(Base64.toUint8Array(that.dataURL), true);
  }
  reader.readAsDataURL(file);
  that.form.content = file.name
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值