现在已经上传了一个文件,无论是在时间后消失还是存储在在线数据库中,可能就不足为奇了。因此,必须创建启用文件上传的应用程序。使用NextJS服务器端,可以实现此功能。
本文分为两部分。在第一部分中,我们将讨论前端,我们将在其中讨论我们的项目的作用和所需的工具。然后,第二部分是关于实现图像和视频上传到云以及如何在XATA数据库中持续数据。
我们正在建造什么
该项目是用于记忆的数字抽认卡。抽认卡有助于学习想要记住的东西。物理抽认卡具有正面和背面;正面通常提出一个问题,反向通常提供解决方案。数字抽认卡允许我们添加图像和视频,以帮助我们更好地记住一个想法,代码,国家的旗帜等。
下面列出了抽认卡的优点。
- 它有助于增强视觉记忆。
- 他们促进学习率并不断便携。
- 对于首字母缩写词,数学公式,算法代码等,抽认卡很有启发性。
- 这是负担得起的。
github url
https://github.com/Theodore-Kelechukwu-Onyejiaku/hackmamba-xata-cloudinary-project
现场网址
http://hackmamba-xata-cloudinary-project.vercel.app/
前端
我们工作的前端部分涉及我们如何与上面共享的实时URL所看到的项目互动。这是用于前端的工具。
前端工具
使用npm i <tool_name>
命令我们可以安装它们。
-
aos
:当我们向下滚动应用程序时,它用于卡片的动画。 -
react-icons
:用于在我们的项目中显示图标。 -
react-quill
:适用于Wysiwyg编辑器添加 front 和 back content。 -
react-toastify
:这用于我们的应用程序中的吐司通知。 - tailwind CSS:这是我们应用程序的主要CSS。请注意,该项目中使用了其他自定义CSS。访问上面的github URL查看全部。
前端逻辑
这是我们应用程序的逻辑。
- 用户通过使用凭据或GitHub提供商(电子邮件和密码)来注册。在GitHub URL中查看“页面/auth/ignup”的文件。
- 成功注册后,用户将路由到登录页面“页面/auth/signin”。
- 成功登录后,用户可以查看其他用户制作的所有卡。
- 我们可以从制作卡,查看我们的收藏和卡,根据其名称或类别搜索卡,在黑暗和灯光设置(例如卡片)之间进行切换以及观看视频的选项。
- 必须在创建卡之前添加卡名称,类别,图像,可选视频和前后内容。
- 用户可以开始翻转卡以练习记忆,电影和视觉效果将帮助他们发展记忆。
- 是该卡的用户创建卡后可以更新或删除该卡的用户。
- 用户可以通过单击加号符号而不是其所有者,在其收藏中添加新鲜制作的卡。
- 有三个编辑卡的选项。我们可以选择仅更新卡的图像,视频或其他信息。
- 我们可以通过将其名称或类别键入搜索框来搜索卡。
下面是前端逻辑的高级模型:
访问上面的实时URL查看应用程序。
后端
云安装和配置
1。安装云
运行此命令。
npm install cloudinary
2。创建一个云帐户
我们需要我们的云云名称,API密钥和API秘密才能继续进行。前往Cloudinary网站here获得这三个。
单击“仪表板”选项卡。在那里,我们将找到我们的API密钥,API秘密和云名称。
单击设置,然后单击上传。那里* ,*您可以添加预设。
给出名称和文件夹值 flashcard ',然后单击“ save” 。
3。将云详细信息添加到.env.local
文件
创建一个.env.local
文件并添加以下内容。
// .env.local
CLOUDINARY_API_KEY=<our_key>
CLOUDINARY_API_SECRET=<our_api_secret>
CLOUDINARY_NAME=<our_cloud_name>
4。创建云配置文件
在我们项目的根部创建一个名为utils
的文件夹。在其中,创建一个文件cloudinary.js
并添加以下代码。
XATA安装和设置
1。创建一个XATA帐户。
单击此link以创建一个XATA帐户。
2.创建数据库和表
如果我们是XATA创建桌子的新手,请阅读并访问这些链接https://xata.io/docs/intro/getting-started和https://xata.io/docs/quickstart/index。现在,创建一个称为测试或的数据库。之后,创建以下表:
用户表
卡表
3。安装XATA数据库
观看视频here并查看此安装文档。或,
- 安装XATA CLI:
npm install -g @xata/cli
- 接下来,使用XATA数据库连接:
xata auth login
我们选择'终端提示我们时在浏览器中创建一个新的API密钥。这打开了浏览器。我们输入API键的名称。
如果成功,我们将在浏览器页面上看到它。
一条消息 - 全部!您现在可以开始使用Xataâ将显示在我们的终端上。
- 用XATA初始化我们的项目
xata init
我们在终端提示期间选择以下内容;
- 选择现有数据库或抽认卡。
- 选择“使用ES模块生成JavaScript代码”,您想在我们的项目中使用代码生成。
- 键入“ utils/xata”以选择代码生成器的输出文件。
- 选择“不想生成Typescript声明?”。
- 选择一个默认开发分支(后备分支) - 选择主要。
- 最后,因为您要创建一个.gitignore文件并忽略.env文件?,选择“是”。
完成后,我们应该看到消息 -
确保选择utils/xata
作为我们的XATA CodeGen文件所在的位置。如果成功,我们的xata.js
文件应该看起来像这样:
上传图像和视频
由于将在NextJS服务器端完成,因此将安装以下软件包。
npm i bcrypt datauri multer next-auth next-connect
-
bcrypt
:这将有助于身份验证,哈希密码和验证。 -
datauri
:将帮助我们将解析的文件(图像和视频)转换为基础64个编码。 -
multer
:将帮助我们解析请求主体。 -
next-auth
:这将添加身份验证。 - 下一步连接:这将有助于我们将Multer作为中间件添加到路由处理程序中。
创建一个create-card.js
文件
我们必须创建一张卡来上传图像和视频。因此,在pages
文件夹的api
文件夹中创建一个名为create-card.js
的文件。
这将处理到/api/create-card
的任何发布请求。因此,前端将发送表单数据,包括我们要上传的图像和视频。
-
第1行:我们导入软件包
next-connnect
。 - 第9行:我们创建一个新的XATA实例。
-
第20行:我们应用Multer中间件。 multer 中间件可确保使用
any()
方法解析任何文件。我们将每张卡的图像和视频存储在变量image
和video
中的图像和视频中,行30 和 31。。 -
第33行:我们创建
datauri/parser
实例将解析的文件转换为基本64编码文件。这样,我们可以上传行40 和 47 中生成的图像和视频。 。
-
行36-40 :在这里,我们将解析的图像文件转换为基本64编码以上传为云。这是使用Cloudinary SDK的
uploader.upload()
方法完成的。请注意,我们在上传预设中传递了flashcards,
和一个选项{ resource_type: 'image' }
告诉Cloudinary这是我们要上传的图像。此方法返回响应,包括创建的新图像的URL,该响应存储在数据库中为image
。 -
行43-47 :与行36-40 相同。唯一的区别是这次,我们告诉Cloudinary这是一个视频
{ resource_type: 'video' }
。 -
行60-73 :我们通过调用XATA的
create()
函数并从前端传递值来创建新卡。
请参阅线中的前端发送的内容 s 115-126 下面。
更新现有图像
更新云中现有图像也意味着更新我们的卡。创建一个名为update-card-image.js
的新的API路由处理程序。
与create-card.js
没有太大的区别。
-
第17行:我们告诉Multer,它应该解析一个名为
image
的单个文件。这是从前端的表单数据图像的名称。 -
行37 :我们通过调用Cloudinary
destroy()
方法来删除卡的现有云图像。此方法仅需要图像的ID才能删除。 - 第43行:我们使用新的图像URL,ID和签名更新卡。
更新现有视频
这与上面的代码相同。我们将创建一个名为update-card-video
的新文件。唯一的区别是,这次我们告诉Multer在第17行中解析一个名为视频的文件。请参阅下面的代码:
删除图像和视频
在删除卡时,我们从而删除了图像和视频。
-
第21和26行:我们称Cloudinary
destroy()
方法并传递了我们要删除卡的图像ID和视频ID。 -
第30行:我们通过传递我们要删除的卡的ID来调用XATA的
delete()
方法。
结论
在本文中,我们通过NextJS服务器端查看了将图像和视频上传到Cloudinary,并使用XATA在数据库中持续存在数据。本文的GitHub URL部分中提供了前端和完整代码。再一次,请访问此处获取live application。