如何将表单数据缓冲区发送到SignServer?

我有一个内存中的文件(在缓冲区中),它不存在于文件系统(所以我不能只是stream)。

我试图使用HTTP将它发送到SignServer 。

以下是我如何做到这一点:

var formdata = require('form-data'); var form = new formdata(); form.append('workerName', 'PDFSigner'); form.append('data', file_buffer); // or // escape(file_buffer.toString('binary')) // or // file_buffer.toString('binary') (without escaping) var request = form.submit('http://localhost:8080/signserver/process', function(err, res) {}); 

当我尝试追加file_buffer SignServer说data是空的:

状态400 – 上传中缺less文件内容

当我尝试追加escape(file_buffer.toString('binary')) (正如我如何在HTTP请求中发送缓冲区中的build议? ),这是相同的故事。

当我尝试追加file_buffer.toString('binary') node.js崩溃说:

node:../src/stream_base.cc:157 int node :: StreamBase :: Writev(const v8 :: FunctionCallbackInfo&):断言`(offset)<=(storage_size)'失败。

中止(核心倾弃)

如何通过Node.JS中的HTTP(multipart / form-data)正确发送文件(缓冲区)?

您明确需要为data字段设置filename ,否则缓冲区不会上载为文件:

 form.append('data', file_buffer, { filename : 'document.pdf' }); 

这是logging(尽pipe不是很清楚)在这里: https : //github.com/form-data/form-data#alternative-submission-methods (向下滚动到第四个例子)。