Я учусь писать приложения на vuejs, решил сделать портфолио как тренировку, но застрял на одном моменте. Код ниже добавляет одно изображение, но мне нужно несколько, что бы потом использовать в слайдере. Подскажите, как это сделать? Вот мой template: `
<b-form-file
size="sm"
placeholder="Выберите файл..."
@change="onFileChange"
></b-form-file>
<div class="selected-images">
<img :src="imageSrc" alt="">
</div>
data () {
return {
id:null,
name:'',
description:'',
type:'',
imageSrc:'',
image:null
}
},
method: {
onFileChange (e) {
const file = e.target.files[0]
const reader = new FileReader()
reader.onload = e => {
this.imageSrc = reader.result
}
reader.readAsDataURL(file)
this.image = file
}
}
Вот Vuex:
import * as fb from 'firebase'
class Work {
constructor (name, description, type, id = null, imageSrc = '') {
this.name = name,
this.description = description,
this.type = type,
this.id = id
}
}
...
actions: {
async createWork ({commit}, payload) {
commit('clearError')
commit('setLoading', true)
let imageSrc
let key
try {
const newWork = new Work (
payload.name,
payload.description,
payload.type,
''
)
await fb.database().ref('works').push(newWork)
.then((data) => {
key = data.key
return key
})
.then(key => {
const filename = payload.image.name
const ext = filename.slice(filename.lastIndexOf('.'))
return fb.storage().ref('works/' + key + '.' + ext).put(payload.image)
})
.then(snapshot => {
return new Promise((resolve) => {
snapshot.ref.getDownloadURL().then(url => {
snapshot.downloadURL = url
resolve(snapshot)
})
})
})
.then((snapshot) => {
imageSrc = snapshot.downloadURL
return fb.database().ref('works').child(key).update({imageSrc: imageSrc})
})
.then(() => {
commit('setLoading', false)
commit('createWork', {
...newWork,
imageSrc: imageSrc,
id: key
})
})
} catch (error) {
commit('setError', error.message)
commit('setLoading', false)
throw error
}
}
}
Заранее спасибо всем, кто поможет разобраться!
// ЗАГРУЗКА ФОТО
const promises = []
const promisesName = []
if (File) {
for (let i = 0; i < File.length; i++) {
const storageRef = firebase.storage().ref();
// Загрузить файл и метаданные в объект //'assets/images/***.jpg'
// Создайте метаданные файла
let metadata = {
contentType: 'image/jpeg',
};
const nameTime = +new Date() + '.jpg'
// Загружаем файлы на firebase storage
const uploadTask = storageRef.child('assets/images/' + nameTime).put(File[i], metadata);
```
//Получаем URL по которому сможем достать файл в firebase cloud из firebase //storage. Создаем массив из всех URL. Добавляя их в массив promises
promises.push(
uploadTask
.then(snapshot =>
snapshot.ref.getDownloadURL()
)
)
//Короткое имя файла. Также добавляем в массив с помощью промисов
promisesName.push(
nameTime
)
}
}
const URLs = await Promise.all(promises)
const NameImages = await Promise.all(promisesName)
//Добавляем в cloude firebase
await db.collection('products').add({
NameImages: NameImages,
arrayImages: URLs,
})
},
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Kак правильно написать выражение - "только положительные числа и 2 знака после, если не ввели после запятой сотые, то записалось как00"
Подскажите ,как реализовать защиту от случайного закрытия вкладки ? Я вкурсе про windowonunload и window
Как проверить, что в ячейке лежит число или нет с помощью javascript?