用户登录

在这个编辑文件资源的表单上,可以修改文件的原名,这个名字会影响下载文件的时候保存文件的名字 .. 还可以修改这个 File name .. 如果修改了这个名字,需要重命名一下上传的文件 .. 重命名的时候如果文件名已经存在了,可以在当前页面上显示一个提示 ..

回到项目 .. 在 FileController 里面,找到处理编辑文件资源用的方法 .. 就是这个 update 方法 .. 方法里需要用到 request .. response .. params .. 还有 session ..

里面先添加一个 fileData .. await ,用一下 File 模型上的 find .. 资源 id 是 params.id ..

下面可以得到请求里的 client_name 还有 file_name .. 对应的值是在 request.all 方法返回的东西里面 .. 这个方法可以得到请求里面包含的数据 .. 这个数据就是编辑表单上的元素的值 ..

再判断一下 .. 如果 file_name 的值不等于 fileData 里的 file_name .. 就是如果在编辑表单上修改了 file_name 的值 ..

我们需要重命名一下文件 .. 重命名的时候很可能文件名已经在文件系统上存在了 .. 这个时候可以显示一个提示信息 .. 用一个 try ... catch 区块 .. 在 try 这里要做的事情如果出了什么异常,在 catch 里面可以得到 ..

添加一个 basePath .. 它的值是 Helpers.publicPath .. uploads ,就是公开资源目录里的 uploads 这个目录的路径 ..

然后添加一个 originalFilePath .. 文件原本的位置 .. 应该是 basePath .. 斜线 .. 加上 fileData 里的 file_name ..

再去准备一下文件的新位置,或者叫新名字, filePath .. 等于 basePath .. 斜线,加上 file_name .. 这个 file_name 是用户在编辑表单上的 file_name 元素里面填写的值 ..

await .. 用一下 Drive 上的 move 方法,这个方法可以重命名或者移动文件 .. 文件是 originalFilePath .. 文件的新名字或者新位置是 filePath ..

如果有什么异常,就会执行 catch 里的东西 .. 这个 error 上面会有一些东西 .. 这里我们用一个 session.flash .. type 是 warning .. message 的值是 error 里的 message ..

然后再 return 一个重定向 .. redirect .. back ..

这样重命名文件就完成了 . 下面还得再把修改保存到数据库里 ..

fileData ,用一下 merge .. 一个对象 .. 添加一个 client_name ... 还有 file_name .. await .. fileData.save() ..

再添加一条成功提示 .. session.flash .. type 是 success ... message 是 Successfully updated .. 最后可以再响应一个重定向 redirect .. back ...

再打开 file.edit 视图,这里还得添加一个 alert 组件 ..

打开 post.edit ... 复制一下这个使用了 alert 组件的代码 .. 把它粘贴到这个 file.edit 里面 ..

预览

回到浏览器 .. 可以试一下 .. 刷新一下这个编辑界面 .. 提示了一个错误 .. 说 Unexpected [ˌʌnɪkˈspektɪd] token ..

这个是因为在这里少了一个逗号 ..

再回来试一下 ...

修改一下这个文件的原名 .. ikea .. 再修改一下它的名字 .. 也把它设置成 ikea .. 提交一下更新 .. 页面上会出现一个成功的提示 ..

回到项目 .. 在 public .. uploads 里面,会有一个叫 ikea 的图像文件 ...

这就说明我们成功的修改了文件的名字 ..

回到浏览器 .. 访问一下文件列表 ... 再打开一个文件页面 ... 修改一下文件的名字 .. 比如也叫它 ikea .. 这次就会出现一个提示 ... 说文件已经存在了 .. 再换个名字 .. 比如 beer .. 也修改一下这个文件的原名 .. 也叫它 beer ..

提交一个更新 .. 会提示更新成功 ..

再下载一下这个图像文件 ... 你会发现,下载保存这个文件的时候,用的文件名就是我们在 Original name 里面设置的名字 ..

更新文件数据与移动文件位置(Drive.move)《 Node.js 应用:文件系统 》

统计

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

社会化网络

关于

微信订阅号

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