Когда я смотрю на код, стоящий за 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, созданному в браузере.