Vue JS n'a pas de fonction de saisie de fichier jusqu'à aujourd'hui, vous pouvez donc modifier v-text-field pour qu'il fonctionne comme un champ de saisie d'image. Le concept est de créer un champ d'entrée de fichier et de le cacher en utilisant css, et d'ajouter un événement dans v-text-field pour déclencher ce champ d'entrée de fichier spécifique pour télécharger l'image. J'ai joint un snippet, s'il vous plaît jouez avec cela, et j'ai également un fiddle créé à l'aide de vue et vuetify, visite ici . Merci !
new Vue({
el: '#app',
data: () => ({
title: "Image Upload",
dialog: false,
imageName: '',
imageUrl: '',
imageFile: ''
}),
methods: {
pickFile() {
this.$refs.image.click()
},
onFilePicked(e) {
const files = e.target.files
if (files[0] !== undefined) {
this.imageName = files[0].name
if (this.imageName.lastIndexOf('.') <= 0) {
return
}
const fr = new FileReader()
fr.readAsDataURL(files[0])
fr.addEventListener('load', () => {
this.imageUrl = fr.result
this.imageFile = files[0] // this is an image file that can be sent to server...
})
} else {
this.imageName = ''
this.imageFile = ''
this.imageUrl = ''
}
}
}
})
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet">
<link href="https://unpkg.com/vuetify/dist/vuetify.min.css" rel="stylesheet">
<div id="app">
<v-app>
<v-toolbar dark color="primary">
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">{{ title }}</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn icon @click="dialog = !dialog">
<v-icon>link</v-icon>
</v-btn>
</v-toolbar>
<v-content>
<v-container fluid>
<v-flex xs12 class="text-xs-center text-sm-center text-md-center text-lg-center">
<img :src="imageUrl" height="150" v-if="imageUrl"/>
<v-text-field label="Select Image" @click='pickFile' v-model='imageName' prepend-icon='attach_file'></v-text-field>
<input
type="file"
style="display: none"
ref="image"
accept="image/*"
@change="onFilePicked"
>
</v-flex>
<v-dialog v-model="dialog" max-width="290">
<v-card>
<v-card-title class="headline">Hello World!</v-card-title>
<v-card-text>
Image Upload Script in VUE JS
<hr>
Yubaraj Shrestha
<br>http://yubarajshrestha.com.np/
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="green darken-1" flat="flat" @click.native="dialog = false">Close</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</v-container>
</v-content>
</v-app>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.js"></script>
Dernière version (V2.0.5) en éditant ce post daté du 11 août 2019, il y a une option de saisie de fichier dédiée. Veuillez suivre le lien ci-dessous pour la documentation officielle : https://vuetifyjs.com/en/components/file-inputs .
0 votes
Vous pouvez simplement utiliser une requête AJAX ordinaire pour télécharger le formulaire.
0 votes
Je veux télécharger des fichiers dans Vuetify, comment faire comme pour le téléchargement d'images ?