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

0 ответов

Другие вопросы по тегам