реализация Python 'readAsDataURL - PullRequest
       5

реализация Python 'readAsDataURL

3 голосов
/ 16 февраля 2011

У меня проблемы с получением URI из определенного файла, например .mp4 / .ogg / etc. Дело в том, что мне нужно сделать это на python, где работает веб-сервер.

Первоначально, я продолжаю так:

def __parse64(self, path_file):
    string_file = open(path_file, 'r').readlines()
    new_string_file = ''
    for line in string_file:
        striped_line = line.strip()
        separated_lines = striped_line.split('\n')
        new_line = ''
        for l in separated_lines:
            new_line += l
        new_string_file += new_line
    self.encoded_string_file = b64.b64encode(new_string_file)

Но этот путь не дает того, что мне нужно, если вы сравните результат с данным здесь.

Что нужно, так это способ реализации функции readAsDataURL () из класса FileReader (см. Код ссылки выше) в python.

ОБНОВЛЕНИЕ: Решение, данное @SeanVieira, возвращает действительное поле данных для URI.

def __parse64(self, path_file):
    file_data = open(path_file, 'rb').read(-1) 
    self.encoded_string_file = b64.b64encode(file_data)

Теперь, как я могу заполнить URI с предыдущими полями?Например, this .

Например: данные: видео / mp4; base64, данные

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 марта 2018

Ответ @SeanVieria не будет работать, если файл очень большой (более 7 МБ)

Эта функция будет работать во всех случаях (протестировано на Python версии 3.4):

def __parse64(self, path_file):
        data = bytearray()
        with open(path_file, "rb") as f:
            b = f.read(1)
            while b != b"":
                data.append(int.from_bytes(b, byteorder='big'))
                b = f.read(1)
        self.encoded_string_file = base64.b64encode(data)
0 голосов
/ 16 февраля 2011

Проблема в том, что вы обрабатываете двоичные данные как текстовые данные, что нарушает ваш код.

Попробуйте:

def __parse64(self, path_file):
    file_data = open(path_file, 'rb').read(-1) 
    #This slurps the whole file as binary.
    self.encoded_string_file = b64.b64encode(file_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...