如何使用node.js和express来上传,显示和保存图像

我需要上传一个图像,并显示它,并保存它,以便在刷新本地主机时不会丢失图像。 这需要使用“上传”button来完成,该button提示进行文件select。

我正在使用node.js并表示服务器端代码,并且对于Web应用程序编程来说真的很新,任何帮助将不胜感激。

感谢提前。

首先,你应该制作一个带有文件input元素的HTML表单。 这是一个简单的例子:

 <form method="post" enctype="multipart/form-data" action="/upload"> <input type="file" name="file"> <input type="submit" value="Submit"> </form> 

那么你应该加载express.bodyParser()中间件:

 app.use(express.bodyParser({uploadDir:'/path/to/temporary/directory/to/store/uploaded/files'})); 

并定义一个path来处理表单post:

 var path = require('path'), fs = require('fs'); // ... app.post('/upload', function (req, res) { var tempPath = req.files.file.path, targetPath = path.resolve('./uploads/image.png'); if (path.extname(req.files.file.name).toLowerCase() === '.png') { fs.rename(tempPath, targetPath, function(err) { if (err) throw err; console.log("Upload completed!"); }); } else { fs.unlink(tempPath, function () { if (err) throw err; console.error("Only .png files are allowed!"); }); } // ... }); 

以显示上传的文件,我假设你已经有一个HTML页面的图像标签:

 <img src="/image.png" /> 

现在你可以使用res.sendFile来上传图片了:

 app.get('/image.png', function (req, res) { res.sendfile(path.resolve('./uploads/image.png')); });