node.js – 如何将表单数据中的缓冲区发送到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说数据为空:

Status 400 – Missing file content in upload

当我尝试追加转义(file_buffer.toString(‘binary’))(如How do I send a buffer in an HTTP request?所示)时,它就是同一个故事.

当我尝试附加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)正确发送文件(缓冲区)?

解决方法

您明确需要为数据字段设置文件名,否则缓冲区不会上传文件

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

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

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...