NodeJS-如何从Blob下载?

时间:2019-08-29 13:06:37

标签: javascript node.js express node-oracledb

如何使用NodeJS从BLOB列返回文件?

我正在使用oracledb库来处理数据库操作,并且我有以下代码:

async function getFile(req, res) {

   let filename = req.params.filename;
   let file = await selectFileFromDb(filename);
   file = file.rows[0][0]; //Column that contains the blob content

   //I would like to return something like this
   res.download(file);

}

我应该怎么做才能从列中读取BLOB内容并作为下载返回给请求者?

谢谢。

1 个答案:

答案 0 :(得分:2)

您必须发送内容标头作为必须下载的文件类型,然后在正文中发送缓冲区(假设您从db获得的是缓冲区)。发送代码后,最后结束响应。这是示例代码。

import tkinter as tk

root = tk.Tk()
array_frame = tk.Frame(root)
toolbar = tk.Frame(root)

# use pack for the toolbar and array frame, grid inside the array frame
toolbar.pack(side="top", fill="x")
array_frame.pack(side="top", fill="both", expand=True)

run_button = tk.Button(toolbar, text="Run")
run_button.pack(side="left")

entries = {}
for i in range(5):
    for j in range(5):
        entry = tk.Entry(array_frame)
        entry.grid(row=i, column=j, sticky="nsew")
        entries[(i,j)] = entry

root.mainloop()

如何将blob内容作为缓冲区

不要忘记设置async function getFile(req, res) { let filename = req.params.filename; let file = await selectFileFromDb(filename); file = file.rows[0][0]; //Column that contains the blob content res.setHeader('Content-Length', file.length); res.write(file, 'binary'); res.end(); } 属性:

oracledb.fetchAsBuffer
相关问题