我正在使用较新版本的Apollo Server V4,需要帮助学习如何从前端上传图片或视频到Cloudinary,并将URL保存到MongoDB数据库中... 请帮帮我。
我已经阅读了Apollo文档,但是没有找到答案... 我现在有点困惑了。
我正在使用较新版本的Apollo Server V4,需要帮助学习如何从前端上传图片或视频到Cloudinary,并将URL保存到MongoDB数据库中... 请帮帮我。
我已经阅读了Apollo文档,但是没有找到答案... 我现在有点困惑了。
这里有一篇非常棒的Apollo关于Apollo文件上传的博客文章, 他们建议使用第三方图像服务或预签名上传URL(例如,通过graphql获取预签名URL,直接将图像上传到该URL,然后通过graphql mutation保存图像的位置/ID)。
虽然Apollo不推荐,但是有一种通过graphql请求上传图像的标准方法,而最受欢迎的Node.js包是graphql-upload。
要在Apollo 4和Express中使用它(如果您正在使用),您需要按照他们的说明在此处使用express中间件进行操作。
请注意,Apollo将阻止“简单”的CORS请求以防止CSRF攻击,这可能会影响您的图像上传,因此您需要遵循此处的说明在您的请求中包含其他标头或禁用CSRF保护(不建议)。您可以通过从下面的CURL请求中排除Apollo-Require-Preflight
标头来查看此示例。$ 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"}}}
url
中收到URL。https://www.apollographql.com/tutorials/fullstack-quickstart/connecting-to-data-sources https://hasura.io/learn/graphql/intro-graphql/graphql-mutations/