【发布时间】:2019-04-28 03:07:03
【问题描述】:
我已经在我的apollo GraphQL 服务器上设置了一个突变,使用graphql-upload (或apollo-upload-server) 来接收来自客户端的文件,现在我正在尝试编写一个测试这个突变,但我不确定如何将实际文件附加到我的模拟请求中。
在我的客户端我有一个input type="file",在上传事件中我提取文件
async upload(event) {
const files = event.target.files || event.dataTransfer.files;
const file = files[0]; // type of file is File
await apollo.mutate({
mutation: gql`
mutation UploadFile($file: Upload) {
uploadFile(file: $file)
}
`,
variables: { file },
})
}
到目前为止一切都很好。但我也想在我的服务器上写一个测试用例。
这是我的问题
在我的服务器上,我想模仿客户端上传文件。但我找不到如何从 NodeJS 中访问实际文件。
我试过了:
const file = fs.readFileSync('path/to/test-file.csv');
但是fs 返回一个Buffer,而不是File 类型,它还包含元数据,例如mimetype、name、lastModified 属性。
如何获得实际的 File object 而不是 Buffer?
谢谢!
【问题讨论】:
-
指定编码例如:
fs.readFileSync('path/to/test-file.csv', 'utf8'); -
我知道它将缓冲区作为格式化字符串返回,但这不是我想要的。据我所知,缓冲区不包含元数据,只包含文件的内容,它是我感兴趣的元数据,表示为
File类型的对象。