Superagent .attach() 文件或缓冲区数据为空

情绪卖家

我遇到了这个问题,其中 superagent 没有正确地将文件或缓冲区附加到请求中,我提到空的原因是由于表单数据看起来像:

------WebKitFormBoundaryy6T3XReWRFT1KfFm
Content-Disposition: form-data; name="media"


------WebKitFormBoundaryy6T3XReWRFT1KfFm--

该文件没有任何信息,并且显示为空 media:

我使用的代码很简单:

.post(`${API_ROOT}${url}`)
        .withCredentials()
        .attach('media', body.media, 'filename.jpg')

在哪里body.media

asBuffer(file, callback) {
    const reader = new FileReader();
    reader.addEventListener('load', () => callback(reader.result));
    reader.readAsDataURL(file);
}
asBuffer(file, ((b) => {
    body.media = b;
}));

或者

body.media = new FormData();
body.media.append('file', inputFile, inputFileName);

或随着之后 asBuffer

Buffer.from(body.media, 'base64');

whereinputFile是类型File我也玩过attach并省略了文件名body.media不是 type时的文件名Buffer

我不认为我.send(body.media)这边有问题,因为 using实际上将文件附加到请求表单数据中,我可以在后端服务器中看到它。只有该.attach()功能无法正常工作,我需要它,因为我还需要发送字段。

我此时找到的唯一解决方法是:

const mediaFile = body.media;
delete body.media;
.post(...)
    .withCredentials()
    .query(body)
    .send(mediaFile)

并且我实际上并不觉得获得一个巨大的 url 只是为了能够将文件与我的字段一起发送。我已经看到了一些像这样发布的问题,但似乎没有人有答案。

情绪卖家

检查后

https://github.com/visionmedia/superagent/blob/master/lib/client.js#L571

显示 superagent 有它自己的FormData变量,它将附加文件附加到该变量 - 这意味着使用FormData我自己变量是多余的,因此会导致嵌套,从而导致空负载。

所以只要传递一个inputFileof 类型File.attach()可以解决问题。

此外,对于这些领域,我有十几个解决方案是:

.field('fieldName', JSON.stringify(body))

并在后端服务器中简单地:JSON.parse(req.body.fieldName)以 JSON 格式获取请求有效负载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应js / superagent /文件dropzone

来自分类Dev

从superagent函数中的GET获取数据

来自分类Dev

Superagent“请求”对象是否被重新定义为功能?

来自分类Dev

使用Superagent和Express 4接收POST请求数据

来自分类Dev

Ubuntu文件系统缓冲区/缓存始终为空

来自分类Dev

Flatbuffer缓冲区始终为空

来自分类Dev

STD文件流已损坏?(内部文件缓冲区为空,无法读取输入)

来自分类Dev

与Superagent保持活动连接

来自分类Dev

与Superagent保持活动连接

来自分类Dev

如何检查缓冲区是否为空?

来自分类Dev

检查stdin缓冲区是否为空

来自分类Dev

从QTcpSocket读取时为空缓冲区

来自分类Dev

音频队列缓冲区为空错误

来自分类Dev

ReactJS简单图像上传缓冲区显示为空

来自分类Dev

Vim:如果缓冲区列表为空,则退出

来自分类Dev

从QTcpSocket读取时为空缓冲区

来自分类Dev

缓冲区为空!:无法分配内存

来自分类Dev

RECV缓冲区为空,但返回值> 1

来自分类Dev

如何检查输入缓冲区是否为空?

来自分类Dev

Cython中访问类型为memoryview的数据缓冲区

来自分类Dev

将缓冲区数据解析为struct

来自分类Dev

检索存储在缓冲区中的文件数据

来自分类Dev

使用superagent管道可读流

来自分类Dev

在我的xhrHandler中实现superAgent

来自分类Dev

使用superagent管道可读流

来自分类Dev

FBO深度缓冲区为红色

来自分类Dev

AUGraph FormatConverter(AUConverter)呈现通知包含ioData缓冲区为空

来自分类Dev

在IDEA,如何自动删除.attach_pidxxx文件

来自分类Dev

R数据点周界缓冲区