#javascript
Вопрос:
export const convertFileToBase64 = file => {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => {
if (reader.result) {
resolve(reader.result)
} else {
reject(Error('Failed converting to base64'))
}
}
})
}
Чего я не хочу, так это понять , возможно ли сгенерировать базу 64 без добавления data:image/png;base64,
в начале строки , может быть, кто-то скажет , что пользовательская строка заменяет метод и удаляет ее, но я также жду файла png, файла pdf и т. Д. Можно ли улучшить мой метод и удалить его ?
Комментарии:
1. А как насчет замены
/data:.*base64,/
?
Ответ №1:
Если я правильно понял, вы можете достичь своей цели с помощью regex
и replace()
подобным образом.
const str1 = "data:image/png;base64,moredatablablabla"
const str2 = "data:application/pdf;base64,datadatadatablabla"
const regex = /data:.*base64,/
console.log(str1.replace(regex,""))
console.log(str2.replace(regex,""))
Ответ №2:
Просто разделите строку на запятую и получите часть после.
const getDataPart = (dataUrl) => dataUrl.split(',', 1)[1];
console.log(getDataPart('data:image/png;base64,somebase64stuff'));
По совпадению, это работает с любой кодировкой URL-адреса данных, поскольку запятая является обязательной частью формата и является единственной частью, которая отделяет данные от остальных.