createReadStream не принимает URL-адрес блоба? - PullRequest
0 голосов
/ 26 марта 2020

this.state.videoBlob является объектом BLOB-объекта. Я использовал URL.createObjectURL для генерации URL-адреса большого двоичного объекта и передал его в fs.createReadStream, как показано ниже: fs.createReadStream(URL.createObjectURL(this.state.videoBlob)) Этот URL-адрес большого двоичного объекта выглядит следующим образом: blobURL: blob:http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3

Но я получил сообщение об ошибке: TypeError: fs.createReadStream is not a function

Проблема не будет существовать, если я передам URL-адрес видео в Интернете. Так как же я могу читать BLOB-объекты из fs.createReadStream? Спасибо!

1 Ответ

1 голос
/ 26 марта 2020

Когда я смотрю на код, стоящий за fs.createReadStream(), он вызывает новый ReadStream () и передает ему путь / URL. На этой строке кода кажется, что единственный поддерживаемый тип URL - это URL файла. Do c ничего не говорит об этом topi c, поэтому я пошел и посмотрел код. Таким образом, мне не кажется, что fs.createReadStream() поддерживает этот тип псевдо-URL.

Поскольку вы просто хотите читать поток с этого URL, и у вас есть фактический URL-адрес удаленного ресурса, я бы посоветовал вам просто используйте http.get() или request() или что-то подобное, так как все они свяжутся с удаленным хостом и вернут вам readStream. Поскольку ваша цель состояла в том, чтобы получить readStream, это один из способов достижения этого.

http.get('http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3', (res) => {
     // res is a readstream here
}).on('error', (err) => {
     // error on the request here
});

К вашему сведению, вы можете найти этот ответ в URL-адресах BLOB-объектов полезным. Я не вижу доказательств того, что fs.createReadStream() поддерживает URL-адреса BLOB-объектов. В браузере они создаются только внутренними компонентами браузера и полезны только в этом специфическом c контексте веб-страницы (они косвенно относятся к некоторому внутреннему хранилищу) и не могут быть переданы за пределы веб-страницы или даже сохранены с одной веб-страницы на другую. Если вы хотите, чтобы ваш сервер имел доступ к актуальным данным по URL-адресу большого двоичного объекта, созданному в браузере, вам нужно было бы загрузить фактические данные на ваш сервер. Ваш сервер не может получить доступ к BLOB-URL, созданному в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...