用户登录

回到项目 .. 找到文件控制器 ... 处理文件上传请求用的是这个控制器里的 store 方法 .. 先把 request 从方法的 context 参数里拿出来用一下 ...

添加一个 file ... 用一下 request 里面的 file 这个方法 .. 然后把在前端的文件上传表单里的 file 类型的那个 input 元素的名字交给这个 file 方法 .. 这个元素我们设置的名字就是 file .. 所以给这个 request 的 file 方法的东西就是这个 file ...

这里我们直接把得到的 file 再响应回去 .. return file ..

回到浏览器 .. 在这个上传文件表单上,选择一个文件 .. 然后提交一下表单 ..

这里显示的东西就是我们用 request 的 file 得到的 ..

clientName 指的是文件的原始名 .. fileName 还没有值,它表示的就是文件上传以后的名字 .. fieldName 是用来选择文件的那个表单元素的名字 .. tmpPath 是文件的临时路径 ..

size 是尺寸,type 是文件的类型,image 表示图像 .. subtype 是文件的扩展名 ..

限制

回到项目, 再去设置一下 file 方法的第二个参数 .. 在把上传的文件移动到指定位置之前,可以去做一些验证 .. 这些规则我们可以放在 file 方法的第二个参数里 .. 比如我们可以添加一个 types ... 设置一下允许的文件的类型 .. 暂时先添加一个 image ... 还有一个 video ..

然后再添加一个 size 属性,它可以设置文件的最大尺寸 .. 比如先把它设置成 20mb ..

文件名

移动上传文件之前可以再设置一下文件的名字 .. 添加一个 fileName .. 一个字符模板 .. new Date.getTime(),方法会返回一个时间戳 .. 后面再加上文件原本的 subtype ...

move

移动文件可以使用 file 这个文件对象上的 move 方法 .. await file.move .. 它的第一个参数就是存储文件的一个路径 ..

把文件可以放在项目的公开资源目录的下面 .. 生成这个路径可以用一个帮手方法 ..

先在文件顶部导入 Helpers ... 用一下 Helpers ..

这里再使用一下 Helpers 上的 publicPath,它会返回公开资源路径 .. 默认就是项目下面的这个 public 目录 .. 再添加一个 uploads ... 就是把文件放在 public 目录下面的 uploads 这个目录里面 ..

然后再设置一下 move 方法的第二个参数 .. 设置一下 name ,就是文件的名字 .. 这个名字可以使用上面定义好的 fileName ..

下面可以 return 一个重定向 .. 用一下 response.redirect .. back .. 再把需要用的 response,拿出来 ...

试验

回到浏览器,可以试一下这个文件上传的功能 .. 选择文件 ... 找一个在本地系统上存储的文件 ..

提交一下表单 ..

回到项目 .. 在 public 目录的下面,会多出一个 uploads ,里面会有我刚才上传上来的这个文件 ... 复制一下文件的位置 ...

再回到浏览器 .. 项目的 public 目录下面的东西我们可以直接访问到 ... 现在浏览器上会显示上传到项目里的这个图片文件 ...

上传与移动文件《 Node.js 应用:文件上传 》

统计

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

社会化网络

关于

微信订阅号

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