javascript - 在 Vuejs 方法中的 Javascript 中分配转换后的 `Base64` 值
问题描述
我正在尝试从我的应用程序的input
字段中检索文件信息。我有一个渲染函数,它可以渲染输入字段,并在输入时调用一个函数,代码如下:type="file"
Vuejs
input: (event) => {
var reader = new FileReader()
reader.readAsDataURL(event.target.files[0])
let baseFile = ''
reader.onload = function () {
baseFile = reader.result
console.log(baseFile)
};
console.log(baseFile)
const docs = {
name: event.target.files[0].name,
size: event.target.files[0].size,
lastModifiedDate: event.target.files[0].lastModifiedDate,
base64: baseFile
}
this.$emit('input', docs)
}
当我console.log
在我的reader.onload
函数中运行这个函数时,我会得到转换后的文件,但是当我在它之外进行控制台时,该值只是一个空字符串。我如何检索并分配给我的const docs
变量。帮我解决这个问题。谢谢。
解决方案
我建议在将其更改为箭头函数后将其余代码放入该函数的块中,如下所示:
input: (event) => {
var reader = new FileReader()
reader.readAsDataURL(event.target.files[0])
let baseFile = ''
reader.onload = () => {// <------ use arrow function
baseFile = reader.result
const docs = {
name: event.target.files[0].name,
size: event.target.files[0].size,
lastModifiedDate: event.target.files[0].lastModifiedDate,
base64: baseFile
}
this.$emit('input', docs)
};
}
推荐阅读
- ios - 为什么我的程序在尝试使用 Int.random() 直接将我的变量设置为随机整数时无法正常工作?
- xamarin - Xamarin.Forms 构建失败
- c - 如何解决多空间警告“数组索引超出范围
- swift - 使用 Snapkit 的自定义视图在使用时不显示
- javascript - 将功能划分为屏幕尺寸
- node.js - 如何使用 Node EJS 将我的 Web 应用程序转换为具有相同功能的桌面应用程序
- php - 完整性约束违反连接表MySql
- javascript - 导航栏上的下拉菜单在 Safari 中不起作用,但在 Chrome 中起作用
- jenkins - Jenkins Groovy,Jenkins DSL 脚本
- c++ - 基于 CLRS 的合并排序 C++ 上的算法介绍,带倒数计数