如何在Apollo服务器V4中上传文件



我使用的是较新版本的apollo服务器V4,我需要帮助如何将图像或视频从前端上传到cloudinary并将url保存到MongoDB数据库…请帮助

我已经阅读了阿波罗的文档,但没有答案……我现在有点陷入

Apollo在这里有一篇关于Apollo文件上传的很棒的博客文章,本质上他们建议使用第三方图像服务或预签名上传url(例如,通过graphql获取预签名的url,将图像直接上传到该url,然后通过graphql突变保存图像的位置/id)。

有一个通过graphql请求上传图像的标准,尽管Apollo不建议这样做,但最流行的Node.js包是graphql上传。

要在Apollo 4和Express中实现这一点(如果您正在使用),您需要遵循他们在此处使用Express中间件的说明。

请注意,Apollo将阻止";简单的";CORS请求防止CSRF攻击,这可能会影响您的图像上传,因此您需要按照此处的说明在请求中包含额外的标头或禁用CSRF保护(不推荐)。通过从下面的CURL请求中排除Apollo-Require-Preflight标头,您可以看到一个示例。

下面是一个在codesandbox中上传graphql的最小示例。

和CURL请求测试它

$ curl https://2nnbw4-4000.csb.app/ 
-F operations='{ "query": "mutation ($id: String!, $image: Upload!) { uploadImage(id: $id, image: $image) { id filename } }", "variables": { "image": null, "id": "1" } }' 
-F map='{ "0": ["variables.image"] }' 
-F 0=@tmp.jpg 
-H 'Apollo-Require-Preflight: true'
{"data":{"uploadImage":{"id":"1","filename":"tmp.jpg"}}}

在向Cloudinary上传请求的响应部分,您将收到密钥中的URL:url

样本响应:https://cloudinary.com/documentation/image_upload_api_reference#upload_response

您可以通过GraphQL将其保存到数据库中。我不确定你被困在哪里(Apollo服务器是否连接到数据库?),但我建议你查阅一些关于如何使用Apollo/GraphQL存储数据的指南。

https://www.apollographql.com/tutorials/fullstack-quickstart/connecting-to-data-sourceshttps://hasura.io/learn/graphql/intro-graphql/graphql-mutations/

最新更新