【发布时间】:2021-02-19 12:28:02
【问题描述】:
我有一个用户生成二维码的应用程序。这些生成的二维码以 png 格式存储在公共文件夹中,以便他可以访问和下载它们。 用户可以根据需要删除二维码,如果不使用二维码,我不希望二维码留在公共文件夹中。 无论如何可以从路由 API 访问公用文件夹并使用某些功能删除特定 QR 码的 png? 谢谢!
【问题讨论】:
我有一个用户生成二维码的应用程序。这些生成的二维码以 png 格式存储在公共文件夹中,以便他可以访问和下载它们。 用户可以根据需要删除二维码,如果不使用二维码,我不希望二维码留在公共文件夹中。 无论如何可以从路由 API 访问公用文件夹并使用某些功能删除特定 QR 码的 png? 谢谢!
【问题讨论】:
公用文件夹中的资源是静态生成的,不应在运行时修改。在开发中,它之所以有效,是因为开发服务器正在为您发挥作用,但它不是一个可扩展的解决方案。假设你可以让它工作,当你想扩展你的服务时你会遇到问题。
假设您运行 Next.js Web 应用程序的多个实例。文件将进入哪个公用文件夹?如果您通过源代码控制对应用程序进行版本控制,并使用 CI/CD 将其部署到 Vercel 或 AWS 等远程服务,该怎么办。新版本推送时公共文件夹中的图片会发生什么变化?
我建议不要在运行时尝试将资源上传到公用文件夹,而是使用 SaaS 解决方案来托管 QR 码。不错的选择是AWS S3 或Cloudinary。您可以将图片临时上传到 API 路由,然后使用 API 将图片上传到您选择的服务。
或者,您可以使用 AWS s3 presigned URLs 之类的东西来使上传图片更加容易。只需让您的 API 路由向客户端返回一个预签名的 URL,然后让客户端直接上传到 Amazon 的服务器,而无需您的应用程序充当中间人。
【讨论】: