在服务端提供上传文件的功能,可以借助一个叫 multer 的包提供的功能。先给项目安装一下这个包,在终端,新建一个终端标签,然后进入到项目所在目录的下面。
执行 npm install ,安装 multer 指定一个具体的版本,安装一下。等会儿我们会用它创建一个上传文件的功能。 完成以后可以再安装一下这个包的类型定义,npm install @types/multer 再指定一个具体的版本,把这个包保存在项目的开发依赖里。
回到项目,打开 file.middleware ,在文件的顶部先导入刚才安装的 multer ,它来自 multer 。 然后可以去创建一个 Multer。
添加一个 fileUpload ,执行一下 multer 这个函数,给它一个对象参数配置一下要创建的这个 Multer,里面可以设置一下 dest ,它的值就是上传文件的存储位置。可以设置成 uploads/,这样使用这个 Multer 上传的文件都会保存在 uploads 这个目录的下面。
下面再去创建一个文件拦截器,它是一个中间件,起个名字可以叫 fileInterceptor ,这个中间件可以使用上面创建的这个 Multer ,就是 fileUpload ,用一下它上面的 signle 这个方法,然后设置一下上传文件的时候表单字段的名字,可以设置成 file。
这样这个 fileInterceptor 可以处理单个文件的上传,在客户端那里上传文件的时候,表单字段的名字要设置成 file。再去定义一个上传文件用的接口,在接口上使用这个 fileInterceptor 中间件,接口就可以提供文件上传的功能了。
上传的文件不需要做源代码管理,所以可以在源代码管理里忽略掉这些文件,在 .gitignore 文件里,添加一个 /uploads,忽略掉 uploads 目录里的所有文件。