我有一个存在于内存中的文件(缓冲区)- 在文件系统上没有这个文件。我想将该缓冲区发送到另一台使用HTTP通信的服务器。
例如,某些API A在内存中创建一个文件,SignServer 操作此类文件,并用新的缓冲区响应。我的API从 A 中获取文件并将其提供给SignServer。
我尝试以多种方式将文件发送到SignServer,但它不断响应状态400(请求中缺少“data”字段)。
我尝试打印
我尝试使用request模块做同样的事情,但也不起作用。
请注意,SignServer不是用Node或JavaScript编写的。它是一个Java应用程序,所以它可能不支持json(这就是为什么我试图使用
例如,某些API A在内存中创建一个文件,SignServer 操作此类文件,并用新的缓冲区响应。我的API从 A 中获取文件并将其提供给SignServer。
我尝试以多种方式将文件发送到SignServer,但它不断响应状态400(请求中缺少“data”字段)。
我尝试过:
var http = require('http');
var querystring = require('querystring');
var data = querystring.stringify({
workerName: 'PDFSigner',
data: file_buffer
});
var request = new http.ClientRequest({
hostname: 'localhost',
port: 8080,
path: '/signserver/process',
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
// I also tried 'multipart/form-data'
'Content-Length': Buffer.byteLength(data)
}
});
request.end(data);
我尝试打印
data
,结果显示:
这很糟糕,因为workerName=PDFSigner&data=
data
没有设置为file_buffer
。
我尝试打印file_buffer
,它确实有内容(不是null、未定义,实际上里面有字节)。
所以对缓冲区进行字符串化会得到一个空字符串。我尝试使用request模块做同样的事情,但也不起作用。
请注意,SignServer不是用Node或JavaScript编写的。它是一个Java应用程序,所以它可能不支持json(这就是为什么我试图使用
querystring
)。是的,我尝试发送json。
multipart/form-data
格式。通常不会使用application/x-www-form-urlencoded
格式发送文件,因为这种格式不太适合用于大(型)二进制数据。 - robertklep