Я пытаюсь реализовать загрузку файлов напрямую через браузер. Наша компания использует Protocol Buffer в качестве формата передачи данных. Итак, как я могу загрузить файл после открытия веб-страницы?
Я пытался использовать bytes
и stream
буфера протокола. Но результат
{"result":{"data":"Cw4ODg4ODgsMCw4ODg4ODgsMTUwMCwwLDE1MDAsNDAwMDAsMTAwMDAsMzAwMDAKMDMvMTEvMjAxNSxVbmtub3duIEl0ZW0sUHJlIFJvbGwgVmlkZW8gKG1heCAwOjMwKSw2MDAwMCwzMTAwMCwyOTAwMCw1MDAwMCwyNDAwMCwyNjAwMCwyMC4wMCUsODQ0NCwwLDQwMDAsNDQ0NCw4OTAzODgsMCwwLDAsODg4ODg4LDAsODg4ODg4LDE1MDAsMCwxNTAwLDQwMDAwLDIxMDAwLDE5MDAwCg=="}}
Какой результат вам здесь нужен? Protobuf является бинарным; неразборчиво без правильных инструментов; в этом случае это выглядит так, как будто он обернут как base-64 в JSON, но: либо необработанный двоичный файл, либо показанный JSON/base-64 может быть в порядке. Вы явно загрузили его, если можете показать нам, что там написано. Итак: какого другого результата вы хотите достичь? — person sany schedule 29.08.2019
Protobuf хорош для структурированного обмена данными, но http обеспечивает идеальный протокол для загрузки файлов. Необходимо установить правильные заголовки, и браузер загрузит файл.
Если вам действительно нужно использовать protobuf для передачи файлов, вам нужно добавить некоторый javascript, который сначала анализирует protobuf, а затем превращает его в файл, который можно загрузить. См. Как создать динамический файл + ссылку для скачать в Javascript? для справки.
Итак, отправьте сообщение в виде байтов, добавьте javascript, который анализирует сообщение protobuf для извлечения байтов, а затем создайте загрузку файла, как в связанном ответе.