掌握Next.js(六)– 上传文件

本文学习如何在Next.js应用中上传文件。


选择云平台

需要选择某个云平台存储用户上传的文件。有很多云平台可以选择,比如Amazon S3、Google Cloud、Microsoft Azure等,本节我们选择的是Cloudinary,因为它与Next.js集成度最好,而且还它提供一些React组件供我们的项目使用。

使用Cloudinary的代码较少,只需一些配置。与之对比,如果使用Amazon S3,就有不少步骤和代码需要实现。


设置 Cloudinary

如果没有云账户,就去注册一下。

https://cloudinary.com

登录后能看到环境名称,复制下来,程序会用到。

安装cloudinary。

npm i next-cloudinary

安装会带来一些实用组件。我们查看一下文件,搜索“next cloudinary”会找到https://next.cloudinary.dev/ ,根据说明在.env文件中添加一行,并以实际的cloudinary环境名称代替:

NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME="<Your Cloud Name>"

上传文件

查看next.cloudinary.dev网站,了解相关组件的使用方法。

新建upload文件夹并在其下新建page.tsx声明upload是路径,在page.tsx下,使用CldUploadWidget组件,uploadPreset需要在Cloudinary上生成。CldUploadWidget本身不展示UI,我们用它将要展示的UI包起来,这里用了一个button。

button的onClick事件,直接调用CldUploadWidget解构出来的open函数,由于有客户端事件,所以在开头声明 “use client”;

uploadPreset的官网截图。

示例页面效果。这个组件可以从多个地方选择文件,这是可以自定义的,比如程序只希望从本地选择图片。

上传完成后,可以在Cloudinary里查看管理。


显示上传的图像

添加一个State用于保存上传图像的信息(publicID),CldUploadWidget添加onUpload事件设置publicID,再添加CldImage组件显示图片。


自定义上传小部件

查看官网示例。

https://demo.cloudinary.com/uw/

我们调整布局及设置,比如只允许本地电脑选择。调整后可以查看代码,进行复制。

调整布局代码如下:


小结

本文介绍了利用Cloudinary上传文件。

下一篇介绍使用 Next Auth 进行身份验证。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注