微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用hapi测试文件上传?

如何解决如何使用hapi测试文件上传?

我的hapi路由中有这种有效载荷格式,该格式仅接受var book = { title: volumeInfo.title,authors: volumeInfo.authors ? volumeInfo.authors[0] : undefined,selfLink: response.items[i].selfLink,cover: volumeInfo.imageLinks ? volumeInfo.imageLinks.thumbnail : undefined } 数据,并且输出设置为multipart/form-data

stream

我想测试该路线,而我的有效载荷是这样:

payload: {
        maxBytes: 1024,output: 'stream',parse: true,allow: 'multipart/form-data',}

hapi注入方法如下:

const FD = new FormData();
    FD.append('field1','value');
    FD.append('field2','value');

我得到了

无效的多部分有效载荷格式

我也尝试使用 const res = await server.inject({ method,url,headers: { ... 'Content-Type': 'multipart/form-data; boundary=--SEParaTION--',},payload: FD,}); 对象设置流,但是它不起作用。我也尝试发送一个Steam对象。

这时,我只想发送一些不会导致错误的路由。不必是FormData。只要我可以添加一些自定义字段来对其进行进一步的测试,任何可以接受的路线都可以。

谢谢。

解决方法

据我所知,FormData在node.js中不存在,所以我假设您正在使用the form-data module

在这种情况下,您需要分别向form-data询问缓冲区和标头,如下所示:

const FormData = require('form-data');

const FD = new FormData();
FD.append('field1','value');
FD.append('field2','value');

const response = await server.inject({
    method,url,headers: {
        <your other headers>
        ...FD.getHeaders(),},payload: FD.getBuffer(),});

如果要测试发送文件,还需要为filename提供append(…)属性,以使服务器可以正确解码二进制数据:

const fileContent = <any Buffer>;
FD.append('form_file_property',fileContent,{filename: 'a testfile'});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。