javascript - 如何发送 API 的 Buffer 响应,作为另一个 API 的响应:NODE JS
问题描述
我是 node.js 和后端开发的新手。返回缓冲区响应时遇到问题。任何人都可以帮助我解决以下情况。
我有后端 API 函数,我从云存储中获取多个图像,返回多个缓冲区文件作为响应。
现在,我再次将缓冲区响应传递给第三方 API 函数......
该第三方 API 函数将处理所有缓冲区文件并生成单个图像缓冲区。
这个最终的单个图像缓冲区应该是我对前端的 API 响应。
但是有些我无法按原样发送该缓冲区,它正在改变。
当我尝试做 response.blob(); 它的生成错误
Uncaught (in promise) TypeError: Failed to execute 'blob' on 'Response': body stream already read 任何人都知道如何正确发送缓冲区响应。
//下面是一些后端代码
downloadSingle = aysnc(req, res){
try{
//I am fetching files from cloud storage
let filelist = [] //I will have a multiple file name in file list;
let OutputBuffers = [];
for (let i =0; i<filelist.length; i++){
const sFiles = await // code for fetching files from cloud storage.. its working fine
const sFileBuffer = await streamToBuffer(sFiles.Body)
OutputBuffers.push({'bufferName': 'fileList[i]' , 'buffer': sFileBuffer})
}
if(OutputBuffers.length>0){
const formData = new FormData();
OutputBuffers.forEach(f=>{
formData.append('files', Buffer.form(f.buffer), {fileName: f.bufferName}))
}
try{
//here I am hitting another API to get a single file from Multiple buffer files
// this API returns buffer response in body and header info
//I need to pass this response buffer and header as it is to front end as response
const result = await fetch(`ThirdParty_API_URL`, {method: "POST", body: formData});
return res.send(result); //I think here I am making mistake
}
catch(e){
return res.status(500).json({'error': e})
}
}
}
catch(e){
return res.status(500).json({'error': e})
}
}
//前端代码
const handleDownloadEvent = async(){
const response = await fetch(`API_URL_for_downloadSingle`, {method: "GET"});
if(response.ok){
const fileName = response.headers.get("Content-Disposition");
const blob = await response.blob(); // this is throwing error
//Uncaught (in promise) TypeError: Failed to execute 'blob' on 'Response': body stream already read
const url = URL.createObjectURL(blob)
}
}
解决方案
推荐阅读
- c# - 在 asp.net 核心项目的程序集中注入 NamedOptions?
- c# - 试图从一个长字符串中取出一个 url
- azure-devops - 在 VSTS 中将配置添加到测试计划
- python - 如何一次分组并连接多列中的多行?
- javascript - 访问 $(this) 值返回未定义的 jquery
- ansible - 配置 ansible 以在远程目标上使用 python3
- sql-server - > all ( ) vs max () 在 SQL Server 中的处理效率和速度
- c# - 如何在 ASP.NET Core 2.2 中使用来自不同托管项目的共享 SignalR Hub
- ruby - Use local version of module from Github instead of installed
- python - Django Channels - 接收 JSON 对象