简介
在前端开发中,GraphQL是一个非常常用的数据查询语言,而@yubeio/apollo-absinthe-graphql-upload
则是一个用于上传文件的GraphQL扩展,可以代替传统的文件上传方式,通过GraphQL的查询和变异来实现文件上传。
本文将详细介绍@yubeio/apollo-absinthe-graphql-upload
的使用方法和注意事项,以便您更好地了解和掌握该工具的使用。
安装
在使用@yubeio/apollo-absinthe-graphql-upload
前,您需要使用npm进行安装,首先打开您的终端,使用以下命令进行安装:
npm install --save @yubeio/apollo-absinthe-graphql-upload
引入 @yubeio/apollo-absinthe-graphql-upload
在您的GraphQL项目中,您需要导入@yubeio/apollo-absinthe-graphql-upload
,并且使用该工具对graphqlHTTP进行扩展,以实现文件上传。
-- -------------------- ---- ------- ------ - -------------------- - ---- ----------------------------------------- ------ - ------------ - ---- ------------------------ ------ ------- ---- ---------- ------ ------ ---- ----------- ----- --- - ---------- -------- ---------------------- ------------ --------- -- -------------------- --------- -- -- -------------- -- -- ----- ------ - --- -------------- ------- --- ------------------------ --- --- ------------ ----- ---- ---
这里我们使用了graphqlUploadExpress
对graphqlHTTP进行扩展,并传入了maxFileSize
和maxFiles
两个参数,以便控制上传文件的大小和数量。
文件上传
在已经完成了对GraphQLHTTP的扩展之后,我们就可以在GraphQL中进行文件上传了。在进行文件上传之前,您需要定义一个上传类型,并且使用GraphQLUpload
来将其注册到GraphQL中。
-- -------------------- ---- ------- ------ - ------------- - ---- ----------------------------------------- ------ - --- - ---- ------------------------ ----- -------- - ---- ------ ------ ---- -------- - ------------------ -------- ------- --------------------- ----------- ---------- - -- ----- --------- - - --------- - ------------- ----- --- - ---- -- -- - ----- - ----------------- --------- --------- -------- - - ----- ----- -- ----------- ------ --------- -- --------------- ----- --- - ----- -- -- - ----- ------------ - --------------- ------ -- - ----- - ----------------- --------- --------- -------- - - ----- ----- -- ----------- ------ --------------------- --- ------ -------------------------- -- -- -- ------ ------- - --------- --------- --
这里我们定义了两个mutation函数singleUpload
和multipleUpload
,并且都需要接收一个文件上传参数来完成文件上传的操作。在函数中我们使用了createReadStream
来获取上传文件的数据流,并且使用该流来完成文件上传的操作。
示例
以下是使用@yubeio/apollo-absinthe-graphql-upload
进行文件上传的完整例子,您可以在自己的开发环境中进行测试。
-- -------------------- ---- ------- ------ - -------------------- - ---- ----------------------------------------- ------ - ------------ - ---- ------------------------ ------ ------- ---- ---------- ------ - ------------- - ---- ----------------------------------------- ------ - --- - ---- ------------------------ ----- --- - ---------- -------- ----------- ---------------------- ------------ --------- -- -------------------- --------- -- -- -------------- -- -- ----- -------- - ---- ------ ------ ---- -------- - ------------------ -------- ------- --------------------- ----------- ---------- - -- ----- --------- - - --------- - ------------- ----- --- - ---- -- -- - ----- - ----------------- --------- --------- -------- - - ----- ----- -- ----------- ------ -------- - ------- -- --------------- ----- --- - ----- -- -- - ----- ------------ - --------------- ------ -- - ----- - ----------------- --------- --------- -------- - - ----- ----- -- ----------- ------ --------------------- --- ------ -------------------------- -- -- -- ----- ------ - --- -------------- --------- ---------- --- ------------------------ --- --- ------------ ----- ---- -- -- -- - -------------------------------- ---
您可以使用Apollo-Server
或者其他GraphQLServer进行测试,在测试过程中如果遇到问题,您可以在官方文档中查看更详细的使用方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562cb81e8991b448e0148