javascript - 如何将多个文件转为base64字符串?

标签 javascript vue.js vuejs2 base64

我有一个这样的组件

<input type="file" multiple @change="toBase64Handler($event)">

<script>
 data() {
  return {
     files: [],
   }
 },
 methods: {
  tobase64Handler(event) {
   // the code
  }
 }
</script>

我想将所有选定的文件转换为 base64 字符串,如下所示:

files: [
  {
   selectedFile: 'ajsdgfauywdljasvdajsgvdasdo1u2ydfouayvsdlj2vo8ayasd...'
  },
  {
   selectedFile: 'askdhgoiydvywdljasvdajsgvdasdo1u2ydfoakjgsfdjagswsd...'
  },
  {
   selectedFile: '12edashjvlsljasvdajsgvdasdo1u2ydfouayvsdlj2vo8ayfsd...'
  },
]

我该如何实现?

最佳答案

您可以循环调用辅助方法 toBase64 的文件,将所有 Promises 推送到一个数组并解析所有它们:

  toBase64(file) {
    return new Promise((resolve, reject) => {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => resolve(reader.result);
      reader.onerror = error => reject(error);
    });
  };

  async tobase64Handler(files) {
    const filePathsPromises = [];
    files.forEach(file => {
      filePathsPromises.push(this.toBase64(file));
    });
    const filePaths = await Promise.all(filePathsPromises);
    const mappedFiles = filePaths.map((base64File) => ({ selectedFile: base64File }));
    return mappedFiles;
  }

关于javascript - 如何将多个文件转为base64字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957130/

相关文章:

javascript - 如何使用JavaScript将字符串转换为数值(应该是可逆的)?

javascript - Vue.js 显示从另一个组件调用一个组件

javascript - Jest Mock React 组件仅在某些测试中

javascript - 选中/取消选中所有子复选框 jquery bootstrap

javascript - Highcharts - 在不使用 RGBA 的情况下更改系列的默认不透明度?

vue.js - 如何将类属性传递给子组件元素

javascript - 从另一个组件重新渲染一个组件的正确方法是什么 [Vue.js]

vue.js - Vuejs - 未定义要求

typescript - 如何在 Vue 中异步加载 vuetify 下拉(v-select)项目

vue.js - 降低 Vuetify 下拉菜单的高度