Cześć. Próbuję przesłać zdjęcia na serwer. Korzystam z Vue.js & Laravel.
W laravelu do odbierania plików używam php $request->file('images')
i teraz moje pytanie, co musi zawierać tablica images? Czy są to nazwy plików?
Pisałem już wcześniej dwa posty ale niestety nikt nie odpowiada :/ Więc może w ten sposób uda mi się coś zdziałać :D
0
1
Domyślnie nie ma jak wysłać, musisz użyć formdata, dorzucić tam pliki i je dopiero wysłać.
Pierwszy link w googlu... https://serversideup.net/uploading-files-vuejs-axios/
0
kod vue
<q-card-section class="q-pt-none">
<q-form @submit.prevent="uploadFileSubmit">
<q-select
v-model="data.album_id"
:options="albums"
option-label="name"
option-value="id"
option-disable="inactive"
emit-value
map-options
:label="this.$t('profile.title.photos.add.photo.album')"
style="margin-bottom: 20px;"
/>
<q-uploader
:label="this.$t('profile.title.photos.add.photo.upload')"
:multiple="true"
class="full-width"
auto-expand
:factory="uploadFile"
accept=".jpg, .png, .gif, image/*"
ref="files">
</q-uploader>
<q-btn type="submit">SUBMIT</q-btn>
</q-form>
</q-card-section>
export default {
name: "AddPhotosUserComponent",
data() {
return {
viewModalUploader: false,
data: {
album_id: '',
photos: []
},
files: ''
}
},
props: {
albums: []
},
methods: {
openModal() {
this.viewModalUploader = true;
},
uploadFileSubmit() {
let formData = new FormData();
for (var i = 0; i < this.data.photos.length; i++) {
let photo = this.data.photos[i];
formData.append('photos[' + i + ']', photo);
}
this.data.photos = formData;
this.$axios.post('user/photos/store', this.data)
.then(() => alert('ok')).catch(() => alert('nie ok'))
},
uploadFile() {
this.data.photos = this.$refs.files.files;
}
}
}
Przechodzi jednak zdjęcia nie są dodawanie. W dev tool -> request payload zwraca {"album_id":3,"photos":{}}