【问题标题】:How can i upload a picture with nodejs and express?如何用nodejs上传图片并表达?
【发布时间】:2017-04-05 04:37:29
【问题描述】:

我有一个用于食品自动化系统的 CMS,我将添加一个用于上传食品图片的部分:

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

我编写了这段代码用于在 Express.js 中发出 POST 请求:

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!");
        });
    }
}); 

但是,当我定义这个 app.use 时,我得到一个错误:

中间件:app.use(express.bodyParser({uploadDir:'/img'}));
错误:错误:大多数中间件(如 bodyParser)不再与 Express 捆绑在一起,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware

当我定义这样的中间件时:

app.use(bodyParser({uploadDir:'/img/'}));

我没有任何错误,但我的代码无法正常工作。

【问题讨论】:

标签: javascript jquery html node.js express


【解决方案1】:

这个解决方案对我有用:

multer  = require('multer'),
upload = multer({ dest: 'views/img' });




app.post('/upload',upload.single('file'), function (req, res) {

});

还有我的表格HTML 表格:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2020-08-04
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    相关资源
    最近更新 更多