再去准备下载文件需要的路由还有处理方法 .. 打开应用的路由 .. 在这里添加一条新的路由 ... 可以使用 Route 的 get 方法 .. 地址是 files/:id/download .. :id 是路由地址里的参数 ..
处理的方法可以使用 FileController 里的 download 这个方法 .. 给路由起个名字 .. 叫它 files.download ..
然后再打开 FileController 控制器 .. 找一个地方 ... 在它里面添加需要用的 download 这个方法 ...
方法里面需要用到 params ... 还有 response ...
添加一个 file .. await .. 用一下 File 模型的 find .. 资源 id 是 params.id ..
下面再组织一下文件的路径 .. filePath .. 一个字符模板 .. 用一下 Helpers.publicPath .. uploads .. 得到公开资源目录里的 uploads 这个目录 .. 斜线 .. 后面再加上 file 的 file_name ...
然后再 return 一个 response .. 可以用一下 download 方法 .. 把要下载的文件的路径交给这个方法就行了 .. 这里就是 filePath ..
这个 download 方法不能保证浏览器强制下载文件 .. 比如图片,视频这些文件,浏览器会在一个新窗口打开它们 .. 如果你想强制下载文件 .. 可以用一下 attachment 这个方法 ..
同样把要下载的文件的路径交给它 .. 它的第二个参数可以是下载到客户端的时候,文件的名字 .. 这里我们可以用一下 file 的 client_name .. 这个 client_name 就是文件的原始名 .. 就是在当初上传这个文件的时候,这个文件的原名 ..
因为文件上传以后,我们会用某种规则重命名上传的文件 .. 下载保存文件的时候,最好可以使用文件的这个原名 ..
预览
回到浏览器 .. 按一下文件页面上的这个下载按钮 ... 它会下载当前页面上显示的这个文件 ..
下载下来的这个文件,它的名字会是当初上传它的时候,这个文件的原名 ..