javascript - 使用 vuetify "<v-file-input>"上传之前预览图像?

标签 javascript vue.js nuxt.js vuetify.js

这就是我现在拥有的

      <v-file-input
            v-model="image"
            type="file"
            class="input"
            label="Upload license"
            hint="Add a picture of youre license"
            outlined
            dense
            @change="onFileChange"
          />

          <v-img :src="image" />

只是让你知道,我知道如何用“”做到这一点,它看起来像这样:

createImage (file) {
  const image = new Image()
  const reader = new FileReader()
  const vm = this

  reader.onload = (e) => {
    vm.image = e.target.result
    console.log(vm.image)
  }
  reader.readAsDataURL(file)
   },        
 onFileChange (e) {
  const files = e.target.files || e.dataTransfer.files
  if (!files.length) { return }
  this.createImage(files[0])
},

只需在输入标记上调用 onFileChange,如 @change="onFileChange"

最佳答案

<v-file-input>返回 @change 上的文件本身与原生不同的事件<input type="file" /> 。所以在这种情况下e.target.files那里不存在,e是文件本身。另外我建议不要分享 image对于两者v-file-inputv-imgv-img需要一个 url 和 v-file-input需要一个文件。相反,我建议将其拆分为 2 个不同的变量,例如 imageimageUrl .

下面您可以看到一个示例:

<v-file-input v-model="image" outlined dense @change="onFileChange" />
<v-img :src="imageUrl" />
data() {
  return {
    image: undefined,
    // to save image url
    imageUrl: ""
  };
},
methods: {
  createImage(file) {
    const reader = new FileReader();

    reader.onload = e => {
      this.imageUrl = e.target.result;
    };
    reader.readAsDataURL(file);
  },
  onFileChange(file) {
    if (!file) {
      return;
    }
    this.createImage(file);
  }
}

这是一个工作示例:https://codepen.io/onelly/pen/xxOBJjL

关于javascript - 使用 vuetify "<v-file-input>"上传之前预览图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64830236/

相关文章:

javascript - jQuery 更改事件不适用于 Rails 应用程序

javascript - 无法通过将文件拖放到按钮外的区域来选择文件,但仅在使用 Shadow DOM 时才在输入内

css - 使用 vue/nuxt 将样式属性附加到所有( anchor )元素

javascript - 迁移 Nuxt 到 2.7 : refresh loop

javascript - 错误 : The client-side rendered virtual DOM tree is not matching server-rendered

javascript - Jquery IF 语句和 .is

javascript - 验证用户是否通过 Firebase 中的电子邮件注册

vue.js - 验证控制台中不存在的字段错误

vue.js - Vue-i18n - npm run serve 失败,错误为 TypeError : Cannot read property 'i18n' of undefined

vue.js - Vuetify - 如何正确验证复选框组