удалите данные:изображение/png;base64, из сгенерированной строки base64

#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-адреса данных, поскольку запятая является обязательной частью формата и является единственной частью, которая отделяет данные от остальных.