gpt4 book ai didi

javascript - 管道文件流的输出是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:00 24 4
gpt4 key购买 nike

也许这个问题的措辞不是最好的,但这里有更多的背景信息。使用 GridFSBucket,我能够在 mongo 中存储文件并获取该文件的下载流。这是我的问题。假设我想将该文件发送回作为对我的 http 请求的响应。

我愿意:

downloadStream.pipe(res);

现在在客户端,当我打印响应文本时,我会得到一些长字符串,其中包含一些看起来已加密的时髦字符。该字符串/流的格式/类型是什么?如何设置我的响应,以便我可以在客户端以 ArrayBuffer 形式获取流数据?

谢谢

更新:

我还没有解决这个问题,但是@Jekrb的建议给出了与console.log(this.responseText)完全相同的输出。看起来该字符串不是缓冲区。这是这两行的输出:

console.log(this.responseText.toString('utf8'))

var byteArray = new Uint8Array(arrayBuffer);

enter image description here

更新 2 - 代码片段

前端:

    var savePDF = function(blob){
//fs.writeFile("test.pdf",blob);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200){

//TO DO: Handle the file in the response which we will be displayed.
console.log(this.responseText.toString('utf8'));
var arrayBuffer = this.responseText;
if (arrayBuffer) {
var byteArray = new Uint8Array(arrayBuffer);
}
console.log(arrayBuffer);

}
};
xhr.open("POST","/pdf",true);
xhr.responseType = 'arrayBuffer';
xhr.send(blob);

};

后端:

app.post('/pdf',function(req,res){

MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
if(err) return console.dir(err);
console.log("Connected to Database");

var bucket = new GridFSBucket(db, { bucketName: 'pdfs' });
var CHUNKS_COLL = 'pdfs.chunks';
var FILES_COLL = 'pdfs.files';
// insert file
var uploadStream = bucket.openUploadStream('test.pdf');
var id = uploadStream.id;

uploadStream.once('finish', function() {

console.log("upload finished!")

var downloadStream = bucket.openDownloadStream(id);
downloadStream.pipe(res);
});

// This pipes the POST data to the file
req.pipe(uploadStream);
});
});

最佳答案

我的猜测是,要么响应被输出为纯二进制文件,而不是base64编码(仍然是一个缓冲区),要么是一个压缩(gzip)响应,需要首先解压缩。

在没有看到代码的情况下很难查明问题。

更新:

您似乎缺少正确的响应 header 。

尝试在 downloadStream.pipe(res) 之前设置这些 header :

res.setHeader('Content-disposition', 'attachment; filename=test.pdf');
res.set('Content-Type', 'application/pdf');

关于javascript - 管道文件流的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42754250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com