如何使用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')); });