NodeJs: Как заархивировать несколько файлов URL без расширений?
Мы пытаемся заархивировать несколько файлов URL, используя zip-stream
с сервера Orthanc PACS он предоставляет URL-адрес для загрузки файлов DICOM, но URL-адрес не содержит расширения файла, но файл загружается в браузере нормально. как мы можем получить этот файл как буфер в NodeJs?
прямой файл (с расширением) получает буфер нормально, но только URL-адрес Orthanc не работает
Пробуя request
библиотека для получения буфера, но не удалось прочитать файл из нее.
образец URL:
http://localhost:8042/instances/836bb092-377912ef-1086b72f-d8f91hbf-a5cf1188/file
Код для получения буфера:
var packer = require('zip-stream');
const request = require('request');
import fs from "fs";
function zip3(req, res){
var archive = new packer(); // OR new packer(options)
console.log("Zip 3")
archive.on('error', function(err) {
throw err;
});
var queue = [
{ name: 'two.dcm', url: 'http://localhost:8042/instances/836bb092-377912ef-1086b72f-d8f91hbf-a5cf1188/file' },
{ name: 'three.dcm', url: 'http://localhost:8042/instances/836bb092-377912ef-1086b72f-d8f91hbf-a5cf1188/file' }
]
// pipe archive where you want it (ie fs, http, etc)
// listen to the destination's end, close, or finish event
function addNextFile() {
var elem = queue.shift()
let url = elem.url
request({ url, encoding: null }, (error, response, body) => {
if (error || response.statusCode < 200 || response.statusCode >= 300) {
console.error('Request failed!');
// addNextFile()
// return;
}
archive.entry(body, { name: elem.name }, function(err, entry) {
if (err) throw err;
console.log("Done----", elem.name)
console.log(body)
if(queue.length > 0)
addNextFile()
else
archive.finish();
archive.pipe(res);
});
})
}
addNextFile()
}
export default zip3