用户登录

在 file.service 里面可以定义一个按文件 ID 查找文件数据用的功能,名字是 findFileById,这个函数支持一个 fileId 参数,文件的 ID ,它的类型是 number。

在函数里面先准备一段要执行的 SQL ,添加一个 statement ,用一个字符模板组织一段 SQL,SELECT * FROM file ,用 WHERE 设置一个条件,条件是 id 等于一个具体的值,这里先用 ? 号来代替。

下面要执行一下准备好的这段 SQL, const 方括号 data,解构执行返回来的结果,等于 await ,用一下 connection 上的 promise(),接着调用 query() 方法,执行的 SQL 是 statement,提供它里面需要的占位符的值,这里就是 fileId,也就是这个函数支持的 fileId 这个参数。

最后让这个函数提供点数据,return 的是 data 里的第一个数据项目。

打开 file.controller,找个地方定义一下文件服务接口需要的处理器,名字是 serve ,函数接收 request,response,还有 next 这几个参数。

在函数主体里面,先从地址参数里,把文件的 ID 拿出来, const ,大括号,fileId ,解构的是 request.params 这个对象。

接着用一段 try,catch,把要做的事情放在 try 区块里,可以先把要提供的文件相关的数据从数据仓库里调取出来,添加一个 file,等于 await,用一下 findFileById ,把文件 id 交给这个函数,这里可以使用 parseInt 把这个文件 id 值的类型转换成数字。

下面要做出响应,这里要响应的是个文件数据,所以可以使用 response 上的 sendFile 这个方法,先把文件的名字告诉这个方法,这里就是 file 里的 filename。

再给它提供一个选项参数,在里面配置一下文件的根目录,设置一下 root 的值,文件是在 uploads 这个目录的下面。然后用 headers 设置一下响应的头部,我们要把文件的类型告诉给客户端,所以可以添加一个 Content-Type 头部,对应的值设置成 file 里的 mimetype 。

在 catch 区块里处理一下发生的错误,执行 next() 带着 error 。

打开 file.router,下面要定义一个文件服务接口,用一下 router 上的 get 方法,接口的地址可以设置成 files 斜线,加上一个 :fileID 参数,斜线,再加上一个 serve 。

接口处理器可以设置成 fileController 里的 serve 这个方法。

定义文件服务接口《 Node.js 服务端应用开发:上传文件 》

统计

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

社会化网络

关于

微信订阅号

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