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

How to send a buffer in form-data to SignServer?

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

我正在尝试使用 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 是空的:

Status 400 - Missing file content in upload

当我尝试附加 escape(file_buffer.toString('binary'))(如 中所建议的)时,情况是一样的。

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

node: ../src/stream_base.cc:157 int node::StreamBase::Writev(const v8::FunctionCallbackInfo&): Assertion `(offset) <= (storage_size)' failed.

Aborted (core dumped)

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

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

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

这在此处记录(虽然不是很清楚):https://github.com/form-data/form-data#alternative-submission-methods(向下滚动到第四个示例)。