NodeJs学习(3) - NodeJs的图片上传功能

在使用文件上传功能之前,需要先引入formidable模块,命令:npm install formidable.

首先来看ejs的页面,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
	<form action="/upload" enctype="multipart/form-data" method="post">
		<input type="file" name="upload" multiple="multiple">
        <input type="submit" value="Upload file" />
	</form>
  </body>
</html>

 然后是后台,我是直接加在app.js里面的。

app.post('/upload', function(req, res){
    var form = new formidable.IncomingForm();
    form.parse(req, function(error, fields, files) {
        console.log(files.upload.path);
        fs.renameSync(files.upload.path, "/tmp/success.png")
    });
	res.render('success.ejs',{message:'success'});
});

当用户在页面上选择了要上传的文件之后,点击上传按钮,后台获取到post请求,将上传的文件临时存储到系统盘的Temp文件夹下面,下面的截图是路径:

然后通过这句代码将文件移动到 C:\tmp 文件夹下面(这个文件夹需要新建)。并且将名字命名为 success.png.

fs.renameSync(files.upload.path, "/tmp/success.png")

最后,页面跳转到指定的页面,图片上传成功!

res.render('success.ejs',{message:'success'});

这里需要注意的是,后台的那部分代码放置的位置,不能放到app.js的尾部,不然会抛出404的异常。要放到前面,如下图:

NodeJs学习(3) - NodeJs的图片上传功能

你可能感兴趣的:(NodeJs学习(3) - NodeJs的图片上传功能)