文件上传

v-file-input 组件是一个特殊的表单,它为选择文件,展示选中文件,展示上传进度提供了美观的界面,旨在取代标准的文件上传表单。

用例

组件 v-file-input 的核心是一个普通的基于 v-text-field 的容器

File inputs(文件上传) - 图1

API

从下面选择您想要的组件,并查看可用的属性、插槽、事件和函数。

File inputs(文件上传) - 图2

示例

下面是一些简单到复杂的例子。

多选

使用 multiple 属性时,v-file-input 可以同时包含多个文件。

template


  1. <template>
  2. <v-file-input multiple label="File input"></v-file-input>
  3. </template>

File inputs(文件上传) - 图3

格式限制

组件 v-file-input 可以仅接受特殊的你想要的媒体或文件格式。想要获取更多信息,请查看 accept attribute 的文档

template


  1. <template>
  2. <v-file-input accept="image/*" label="File input"></v-file-input>
  3. </template>

File inputs(文件上传) - 图4

带有纸片

选中的文件可以以 chip 的形式展示 。当带有 chipsmultiple 参数时,每一个标签将显示(相对于文件计数)。

template


  1. <template>
  2. <div>
  3. <v-file-input chips multiple label="File input w/ chips"></v-file-input>
  4. <v-file-input small-chips multiple label="File input w/ small chips"></v-file-input>
  5. </div>
  6. </template>

File inputs(文件上传) - 图5

显示的大小

所选文件的显示的大小可以使用 show-size 属性进行配置。 显示的大小可以是 1024 (提供 true 时使用的默认值) 或 _1000_。

template


  1. <template>
  2. <v-file-input show-size label="File input"></v-file-input>
  3. </template>

File inputs(文件上传) - 图6

计数器

当使用 show-size 属性和 counter 时,将在输入下显示文件的总数和大小。

template


  1. <template>
  2. <v-file-input show-size counter multiple label="File input"></v-file-input>
  3. </template>

File inputs(文件上传) - 图7

Blog Free

A simple template that features a clean interface for creating a blog or blog-like application.

ads by Vuetify

](https://blog-free.johnleider.com?ref=vuetifyjs.com)

自定义图标

v-file-input 有一个默认的预设图标,可以在组件上设置或全局调整。 关于不断变化的全局组件的更多信息可在 customizing icons page

template


  1. <template>
  2. <v-file-input
  3. label="File input"
  4. filled
  5. prepend-icon="mdi-camera"
  6. ></v-file-input>
  7. </template>

File inputs(文件上传) - 图8

密集

您可以使用 dense 属性降低文件输入高度。

template


  1. <template>
  2. <v-file-input label="File input" outlined dense></v-file-input>
  3. </template>

File inputs(文件上传) - 图9

选择插槽

使用 selection 插槽,您可以自定义输入选择的外观。 通常使用 chips 完成此操作,但是可以使用任何组件或标记。

template script


  1. <template>
  2. <v-file-input
  3. v-model="files"
  4. placeholder="Upload your documents"
  5. label="File input"
  6. multiple
  7. prepend-icon="mdi-paperclip"
  8. >
  9. <template v-slot:selection="{ text }">
  10. <v-chip
  11. small
  12. label
  13. color="primary"
  14. >
  15. {{ text }}
  16. </v-chip>
  17. </template>
  18. </v-file-input>
  19. </template>
  1. <script>
  2. export default {
  3. data: () => ({
  4. files: [],
  5. }),
  6. }
  7. </script>

File inputs(文件上传) - 图10

验证

与其他输入类似,您可以使用 rules 属性来创建您自己的自定义验证参数。

template script


  1. <template>
  2. <v-file-input
  3. :rules="rules"
  4. accept="image/png, image/jpeg, image/bmp"
  5. placeholder="Pick an avatar"
  6. prepend-icon="mdi-camera"
  7. label="Avatar"
  8. ></v-file-input>
  9. </template>
  1. <script>
  2. export default {
  3. data: () => ({
  4. rules: [
  5. value => !value || value.size < 2000000 || 'Avatar size should be less than 2 MB!',
  6. ],
  7. }),
  8. }
  9. </script>

File inputs(文件上传) - 图11

复杂选择插槽

选择插槽的灵活性使您可以适应复杂的用例。 在此示例中,我们将前两个选择显示为筹码,同时为剩余金额添加数字指示符。

template script


  1. <template>
  2. <v-file-input
  3. v-model="files"
  4. color="deep-purple accent-4"
  5. counter
  6. label="File input"
  7. multiple
  8. placeholder="Select your files"
  9. prepend-icon="mdi-paperclip"
  10. outlined
  11. :show-size="1000"
  12. >
  13. <template v-slot:selection="{ index, text }">
  14. <v-chip
  15. v-if="index < 2"
  16. color="deep-purple accent-4"
  17. dark
  18. label
  19. small
  20. >
  21. {{ text }}
  22. </v-chip>
  23. <span
  24. v-else-if="index === 2"
  25. class="overline grey--text text--darken-3 mx-2"
  26. >
  27. +{{ files.length - 2 }} File(s)
  28. </span>
  29. </template>
  30. </v-file-input>
  31. </template>
  1. <script>
  2. export default {
  3. data: () => ({
  4. files: [],
  5. }),
  6. }
  7. </script>

File inputs(文件上传) - 图12