Как получить двоичные данные из файла blob?

Ссылка скопирована
1 ответ

Как посредством яваскрипт можно получить двоичные данные из файла?

blob:http://127.0.0.1:85/b2997ee2-4619-4b13-a2eb-a70b6aaf70b8

blob:http://127.0.0.1:85/b2997ee2-4619-4b13-a2eb-a70b6aaf70b8

Форму я отправлять не хочу, я записываю в переменную урл ("url": url), и отправляю на сервер переменную state.

setImages(state, [image, e]){         const file=e.target.files[0];         const url=URL.createObjectURL(file);          const reader = new FileReader();          reader.onloadend = function() {              base64String = reader.result;          }         reader.readAsDataURL(file);         console.log(base64String));    //как получить base64String?          state.images[image.id].file={"name": file.name, "size": file.size, "type": file.type, "tmp_name": file.tmp_name, "error": file.error, "url": url};     }

setImages(state, [image, e]){ const file=e.target.files[0]; const url=URL.createObjectURL(file); const reader = new FileReader(); reader.onloadend = function() { base64String = reader.result; } reader.readAsDataURL(file); console.log(base64String)); //как получить base64String? state.images[image.id].file={"name": file.name, "size": file.size, "type": file.type, "tmp_name": file.tmp_name, "error": file.error, "url": url}; }

Мне нужно получить содержимое на стороне php в виде

"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAD7GlDQ1BpY2MAAHjajZTPbxRlGMc/u/POrAk4B1MBi8GJP4CQQrZgkAZBd7vLtlDLZtti25iY7ezb3bHT2fGd2fIjPXHRG6h/gIocPJh4MsFfES7AQQMJQUNsSEw4lPgjRBIuhtTDTHcHaMX39Mzzfp/v9/s875OBzOdV33fTFsx6oaqU8tb4xKSVuUGaZ1hDN2uqduDnyuUhgKrvuzxy7v1MCuDa9pXv//OsqcnAhtQTQLMW2LOQOga6a/sqBOMWsOdo6IeQeRboUuMTk5DJAl31KC4AXVNRPA50qdFKP2RcwLQb1Rpk5oGeqUS+nogjDwB0laQnlWNblVLeKqvmtOPKhN3HXP/PM+u2lvU2AWuDmZFDwFZIHWuogUocf2JXiyPAi5C67If5CrAZUn+0ZsZywDZIPzWtDoxF+PSrJxqjbwLrIF1zwsHROH/Cmxo+HNWmz8w0D1VizGU76J8Enof0zYYcHIr8aNRkoQj0gLap0RqI+bWDwdxIcZnnRKN/OOLR1DvVg2WgG7T3VbNyOPKsnZFuqRLxaxf9sBx70BY9d3go4hSmDIojy/mwMToQ1YrdoRqNa8XktHNgMMbP+255KPImzqpWZSzGXK2qYiniEX9Lbyzm1DfUqoVDwA7Q93MkVUXSZAqJjcd9LCqUyGPho2gyjYNLCYmHROGknmQGZxVcGYmK4w6ijsRjEYWDvQomUrgdY5pivciKXSIr9oohsU/sEX1Y4jXxutgvCiIr+sTedm05oW9R53ab511aSCwqHCF/uru1taN3Ur3t2FdO3XmguvmIZ7nsJzkBAmbayO3J/i/Nf7ehw3FdnHvr2tpL8xx+3Hz1W/qifl2/pd/QFzoI/Vd9QV/Qb5DDxaWOZBaJg4ckSDhI9nABl5AqLr/h0UzgHlCc9k53d27sK6fuyPeG7w1zsqeTzf6S/TN7Pftp9mz294emvOKUtI+0r7Tvta+1b7QfsbTz2gXtB+2i9qX2beKtVt+P9tuTS3Qr8VactcQ18+ZG8wWzYD5nvmQOdfjM9WavOWBuMQvmxva7JfWSvThM4LanurJWhBvDw+EoEkVAFReP4w/tf1wtNoleMfjQ1u4Re0XbpVE0CkYOy9hm9Bm9xkEj1/FnbDEKRp+xxSg+sHX2Kh3IBCrZ53amkATMoHCYQ+ISIEN5LATob/rHlVNvhNbObPYVK+f7rrQGPXtHj1V1XUs59UYYWEoGUs3J2g7GJyat6Bd9t0IKSK270smFb8C+v0C72slNtuCLANa/3Mlt7YanP4Zzu+2Wmov/+anUTxBM79oZfa3Ng35zaenuZsh8CPc/WFr658zS0v3PQFuA8+6/WQBxeNN..."

"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAD7GlDQ1BpY2MAAHjajZTPbxRlGMc/u/POrAk4B1MBi8GJP4CQQrZgkAZBd7vLtlDLZtti25iY7ezb3bHT2fGd2fIjPXHRG6h/gIocPJh4MsFfES7AQQMJQUNsSEw4lPgjRBIuhtTDTHcHaMX39Mzzfp/v9/s875OBzOdV33fTFsx6oaqU8tb4xKSVuUGaZ1hDN2uqduDnyuUhgKrvuzxy7v1MCuDa9pXv//OsqcnAhtQTQLMW2LOQOga6a/sqBOMWsOdo6IeQeRboUuMTk5DJAl31KC4AXVNRPA50qdFKP2RcwLQb1Rpk5oGeqUS+nogjDwB0laQnlWNblVLeKqvmtOPKhN3HXP/PM+u2lvU2AWuDmZFDwFZIHWuogUocf2JXiyPAi5C67If5CrAZUn+0ZsZywDZIPzWtDoxF+PSrJxqjbwLrIF1zwsHROH/Cmxo+HNWmz8w0D1VizGU76J8Enof0zYYcHIr8aNRkoQj0gLap0RqI+bWDwdxIcZnnRKN/OOLR1DvVg2WgG7T3VbNyOPKsnZFuqRLxaxf9sBx70BY9d3go4hSmDIojy/mwMToQ1YrdoRqNa8XktHNgMMbP+255KPImzqpWZSzGXK2qYiniEX9Lbyzm1DfUqoVDwA7Q93MkVUXSZAqJjcd9LCqUyGPho2gyjYNLCYmHROGknmQGZxVcGYmK4w6ijsRjEYWDvQomUrgdY5pivciKXSIr9oohsU/sEX1Y4jXxutgvCiIr+sTedm05oW9R53ab511aSCwqHCF/uru1taN3Ur3t2FdO3XmguvmIZ7nsJzkBAmbayO3J/i/Nf7ehw3FdnHvr2tpL8xx+3Hz1W/qifl2/pd/QFzoI/Vd9QV/Qb5DDxaWOZBaJg4ckSDhI9nABl5AqLr/h0UzgHlCc9k53d27sK6fuyPeG7w1zsqeTzf6S/TN7Pftp9mz294emvOKUtI+0r7Tvta+1b7QfsbTz2gXtB+2i9qX2beKtVt+P9tuTS3Qr8VactcQ18+ZG8wWzYD5nvmQOdfjM9WavOWBuMQvmxva7JfWSvThM4LanurJWhBvDw+EoEkVAFReP4w/tf1wtNoleMfjQ1u4Re0XbpVE0CkYOy9hm9Bm9xkEj1/FnbDEKRp+xxSg+sHX2Kh3IBCrZ53amkATMoHCYQ+ISIEN5LATob/rHlVNvhNbObPYVK+f7rrQGPXtHj1V1XUs59UYYWEoGUs3J2g7GJyat6Bd9t0IKSK270smFb8C+v0C72slNtuCLANa/3Mlt7YanP4Zzu+2Wmov/+anUTxBM79oZfa3Ng35zaenuZsh8CPc/WFr658zS0v3PQFuA8+6/WQBxeNN..."

Дополнительно:

Форму я отправлять не хочу

а зря

  • Виктор,а без отправки формы нельзя получить двоичное содержимое файла?
  • 1. зачем читать из урла, тем более blob:, который живет исключительно в браузере, когда есть Blob.arrayBuffer()
    2. а вот преобразовывать полученный ArrayBuffer в base64 нужно будет самостоятельно, т.к. btoa() не принимает ArrayBuffer напрямую, так что или правильно конвертировать его в строку и скармливать btoa(), или найти/написать преобразовалку из ArrayBuffer в base64, но ИМХО проще таки форму отослать
  • IvanU7n, благодарю за ответ.
    Делаю
    const file=e.target.files[0]; console.log(file. arrayBuffer())

    const file=e.target.files[0]; console.log(file. arrayBuffer())

    ничего не выводит.....

  • Hfnas, если "ничего не выводит", то вероятно этот кусок кода не выполняется

    Как получить двоичные данные из файла blob?

  • Ответы:

    https://learn.javascript.ru/file

    • Виктор,
      <script> const reader = new FileReader();          reader.onloadend = function() {              base64String = reader.result;          }         reader.readAsDataURL(file);         console.log(base64String));    //как получить base64String? </script>

      <script> const reader = new FileReader(); reader.onloadend = function() { base64String = reader.result; } reader.readAsDataURL(file); console.log(base64String)); //как получить base64String? </script>

      Вопрос, как получить reader.result в переменную?

    • Hfnas, может reader.onload, а не onloaded? И console.log туда переместить
      const reader = new FileReader(); reader.onload = function() {     base64String = reader.result;     console.log(base64String)); } reader.readAsDataURL(file);

      const reader = new FileReader(); reader.onload = function() { base64String = reader.result; console.log(base64String)); } reader.readAsDataURL(file);

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Для получения двоичных данных из файла blob в PHP, вам потребуется выполнить несколько шагов. Вначале необходимо установить соединение с базой данных и выполнить запрос для извлечения данных blob. Затем вам нужно будет обработать эти данные и преобразовать их в двоичный формат.

    Пример кода:

    // Подключение к базе данных
    $pdo = new PDO('mysql:host=хост;dbname=название_бд', 'пользователь', 'пароль');
     
    // Выполнение запроса для извлечения данных blob
    $stmt = $pdo->prepare("SELECT blob_column FROM table_name WHERE id = :id");
    $stmt->bindParam(':id', $id);
    $stmt->execute();
     
    // Получение данных blob
    $row = $stmt->fetch();
    $blobData = $row['blob_column'];
     
    // Преобразование данных blob в двоичный формат
    $binaryData = unpack('H*', $blobData);
    $binaryData = hex2bin($binaryData[1]);
     
    // Использование двоичных данных
    echo $binaryData;

    // Подключение к базе данных $pdo = new PDO('mysql:host=хост;dbname=название_бд', 'пользователь', 'пароль'); // Выполнение запроса для извлечения данных blob $stmt = $pdo->prepare("SELECT blob_column FROM table_name WHERE id = :id"); $stmt->bindParam(':id', $id); $stmt->execute(); // Получение данных blob $row = $stmt->fetch(); $blobData = $row['blob_column']; // Преобразование данных blob в двоичный формат $binaryData = unpack('H*', $blobData); $binaryData = hex2bin($binaryData[1]); // Использование двоичных данных echo $binaryData;

    В этом примере мы устанавливаем соединение с базой данных, выполняем запрос для извлечения данных blob, извлекаем эти данные и преобразуем их в двоичный формат с помощью функций `unpack` и `hex2bin`. Далее мы можем использовать эти двоичные данные по нашему усмотрению.

    Убедитесь, что заменили 'хост', 'название_бд', 'пользователь', 'пароль', 'blob_column' и 'table_name' на актуальные значения в вашем коде. Не забудьте также обработать ошибки и добавить проверки на существование данных перед их использованием.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно