用户登录

打开 file.controller,在文件顶部先导入点东西,导入 lodash,一会儿我们会让它帮点忙。再导入 createFile ,来自当前目录下的 file.service 。

修改一下 store 这个函数,它是上传文件接口的处理器,去掉函数里的主体部分,先准备好当前用户,从 request.user 里,把当前用户的 id 解构出来,重命名为 userId。

再准备一下上传的这个文件所属的内容,我们可以在这里规定让客户端通过地址查询符来设置文件所属的内容,这里从地址查询符里,把 post 这个查询符解构出来,重新起个名字叫 postId。解构的对象是 request.query,它里面的东西就是所有的地址查询符。

然后再去准备一下上传文件相关的信息,添加一个 fileInfo ,它的值可以使用 lodash 里的 pick 这个方法,从 request.file 这个对象里挑选几个属性,组织成一个新的对象。需要的是 originalname,mimetype,filename 还有 size 。

准备好了要存储的数据,下面可以把它们保存到数据仓库里,用一段 try, catch,在 try 区块里,添加一个 data,等于 await,执行 createFile,给它提供一个对象参数,先把 fileInfo 里的东西放进来,然后再添加一个 userId,还有 postId 。

保存以后,做出一个响应,response.status 把响应的状态码设置成 201,再用 send ,把 data 里的数据发送给客户端。

在 catch 里面处理一下异常,执行 next() 带着 error。这样存储文件信息出现了异常,就交给应用默认的异常处理器去处理。

在 HTTP 客户端,打开 上传文件 请求,修改一下请求的地址,在地址里加上一个查询符,名字是 post,它的值是 3 ,意思就是这个要上传的文件属于 ID 号是 3 的内容。

请求里带的身份验证用的令牌是服务端给白居易这个用户签发的,请求里已经配置好了主体数据,就是一个 Multipart form,已经选好了要上传的文件。发送一下这个请求,成功以后会得到一个状态码是 201 的响应。

回到数据库客户端,打开应用数据仓库里的 file 这个数据表格,在这个表格里现在会出现一条数据记录,保存的就是刚才在客户端上传的文件相关的信息。比如文件的原始名,文件类型,文件名,大小,还有文件所属的内容的 ID,还有上传这个文件的用户的 ID。

这里记录的文件所属的内容 ID 是 3,打开 post 表,观察一下 id 等于 3 的这条内容数据,是 暮江吟 。

上传文件的用户的 ID 是 6,打开 user 表,观察一下 id 等于 6 的这条用户数据,这个用户是 白居易。

存储上传文件信息《 Node.js 服务端应用开发:上传文件 》

统计

12400
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点