簡體   English   中英

如何在 hapi.js 中處理 arrayBuffer?

[英]How to handle arrayBuffer in hapi.js?

我需要將 arrayBuffer 上傳到服務器並將其保存到文件中。 我在客戶端使用 axios,hapi js 作為服務器。 我不知道如何從 hapi 處理程序中的請求中提取數據。

axios 代碼

const config = {
                    data: image //image- arraybuffer object (UInt8)
                };

 axios.post(HOST_URL + '/upload', config)

Hapi 路由器和處理程序

const fs = require('fs');
var Readable = require('stream').Readable;
var _ = require('underscore');
...
 server.route({
        path: '/upload',
        method: 'POST',
        options: {
            payload: {
                output: 'stream',
                maxBytes: 50 * 1024 * 1024
            }
        },
        handler: async (req, h) => {
            const { payload } = req;
            const response =  handleFileUpload(payload,h);
            return response;
        }
    });
    const handleFileUpload = (p,h) => {
        return new Promise((resolve, reject) => {
            var imagestream = new Readable;
            imagestream.push(new Buffer(_.values(p)));//problem here!!!
            imagestream.push(null);
            let filepath = 'D:\\tmp\\'+"image.nii"
            imagestream.pipe(fs.createWriteStream(filepath));
            return h.response({"ok":true});
        })
    };

問題是數據沒有從有效載荷中“提取”出來,並且在嘗試創建緩沖區時承諾被拒絕。 有沒有人可以幫助我舉例說明如何在 hapi 中處理數組緩沖區?

要使有效負載成為可讀流的實例,您需要將 parse 設置為 false,從而返回未修改的流。

payload: {
    output: 'stream',
    maxBytes: 50 * 1024 * 1024,
    parse: false
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM