2

我有一个如下的路由器:

Router.route("/public/dicom/:dataid/:filename", function () {
    var filePath = this.params.dataid + "/" + this.params.filename;

    var basePath = process.env.HOME;
    var filename = basePath + "/public/dicom/" + filePath;
    //        var filename = path.normalize(path.join(basePath, "public/dicom/" + filePath));
    //console.log("+==================", filename)
    var res = this.response;
    if (!fs.existsSync(filename) ||
        !fs.statSync(filename).isFile()) {
        //console.log("==========================ERROR")
        res.writeHead(404, { 'Content-Type': 'text/html' });
        res.end('404: no such asset: ' + this.params.filename);
        return;
    }
    var data = fs.readFileSync(filename);
    res.writeHead(200, { 'Content-Type': "application/octet-stream", "charset": "binary" });
    res.write(data);
    res.end();
}, { where: "server" });

只需读取 DICOM 文件的内容并返回客户端。像 响应数据一样的响应

在客户端站点中,我想将响应数据用作 arrayBuffer 数据。请帮我!

PS:当我尝试使用响应数据时,我收到了一些错误,例如Uncaught TypeError: Cannot read property 'byteLength' of null

 var dataOfPapaya = new Uint8Array(response.content);
 console.log('dataOfPapaya', dataOfPapaya.byteLength);
 var params = [];

 // Configuration
 params['binaryImages'] = [dataOfPapaya];
 params['kioskMode'] = true;
 params['showControls'] = false;
 params["showOrientation"] = true;
 params["radiological"] = true;

 papaya.Container.startPapaya();
 papaya.Container.resetViewer(0, params);

我使用 papayajs 查看 DICOM 文件:https ://github.com/rii-mango/Papaya

4

1 回答 1

0

您需要使用 ArrayBuffer。我可以重新创建您在使用 Uint8Array 时看到的错误。

 var dataOfPapaya = response.content;
 var params = [];
 params['binaryImages'] = [dataOfPapaya];

有关使用 ArrayBuffer 的示例,请参见此处。

于 2018-05-11T15:14:56.193 回答