node.js结合express实现文件上传,分为三个部分:上传表单、接收上传文件、保存上传文件。node.js 文件上传代码
实现一个网络应用的时候,碰到一个非常普通的需求:文件上传。
这是我第一次使用Node来做文件上传,所以我通过Google查了很多资料。
Holowaychuk先生一如既往的用令人难以置信的速度回复了我,他的回答让我懂得首先应该做什么:读文档。
1、上传表单
这是整个挑战中最平常的一环,您可能已经非常熟悉了这一部分,无论如何,为了文章的完整性,我还是必须说一下。
你将需要使用一个表单来进行方件上传,我使用Jade来生成HTML代码,它看起来是这样的:
form.action将指向一个文件上传的路由,继续往下看。
2、接收上传文件
如果你使用的是最新版本的Node和Express,那么上传文件是一块小甜饼。
在我们的上传路由里,请求参数是req.files,通过它来设置允许上传文件的类型。它看起来像下面这样:
在req.files对象下,displayImage属性是你HTML里标记的表单值,req.files将为每一个有效的HTML文件表单包含一个这样的属性。
文件对象包含:类型、文件大小、名字属性,这些属性将用以在服务器端进行判断确认。
3、保存上传文件
假设文件是有效的,下一步将用到文件路径属性,文件一开始将保存到Tmp文件夹里,程序需要将文件从临时目录移到你的目标文件夹中。
在fs.readFile的回调函数中,通过文件内容获取数据属性,例子中的应用需要修改文件属性并且将文件保存到一个新的位置,所以fs.writeFile便是用以将文件数据写到一个新的路径下。
如果应用仅是要将文件保存到一个新的位置,可以使用fs.rename来实现。
使用Node加Express上传文件大概就是这样,我曾经使用过许多服务器端的语言如python、Java、Scala和PHP来做文件上传功能,但是我都感觉没有使用Node简单,所以我不认为javascript应该被标记为一种劣质的服务器端语言。